本文共 3959 字,大约阅读时间需要 13 分钟。
面向对象思想概述 随着需求的更改,功能的增多,需要把不同的功能进行封装,其中功能类似的封装在一起,这样一来结构就清晰了很多。用的时候找到对应的类就可以了。这就是面向对象的思想。 面向对象是一种更符合我们思想习惯的思想,可以将复杂的事情简单化。学习编程语言,就是为了模拟现实世界的事物,实现信息化。 面向对象和面向过程的区别 面向过程强调的是每一个功能的步骤;面向对象强调的是对象,然后由对象去调用功能。 面向对象的特点 (1)封装(encapsulation); (2)继承(inheritance);(3)多态(polymorphism)
下面来举一个例子展示面向对象思想
/*
*教练和运动员案例 * 乒乓球运动员和篮球运动员。乒乓球教练和篮球教练。 * 为了出国交流,跟乒乓球相关的人员都需要学习英语。 *请分析这个案例中有哪些抽象类,哪些接口,哪些具体类? * 教练和运动员都是中国人,人可作为此处的顶级抽象类; * 教练可作为人的抽象类,子类有乒乓球教练、篮球教练; * 运动员可作为人的抽象类,子类有乒乓球运动员、篮球运动员; * 额外的技能(学习英语)可作为接口,由乒乓球运动员类去实现;*/
//中国人抽象类 abstractclassChinese{ //凡是有公共属性和方法的都可以抽象出来 private String gender, name; private int age; public Chinese(){} public Chinese(String gender,String name,int age){ this.gender=gender;this.name=name;this.age=age; } public voidsleeping(){ //不是抽象方法,在其子类可以不复写 System.out.println("中国城市成年人平均睡眠时间7小时");} public abstract void eating(); public voidsetName(String name){this.name = name;} publicString getName(){return name;} public void setGender(String gender){this.gender = gender;} public String getGender(){return gender;} public voidsetAge(int age){this.age = age;} public int getAge(){return age;}
}
//定义接口,已扩展乒乓球有关的子类功能
interface SpeakEnglish{ publicvoidspeakEnglish(); //接口中的方法默认且必须是抽象的}
//教练抽象类 abstract classCoach extends Chinese{ public Coach(){} public Coach(String gender,String name,int age){ super(gender,name,age);} public abstract void teach();}
//运动员抽象类 abstractclassAthleteextends Chinese{ public Athlete(){} public Athlete(String gender,String name,int age){ super(gender,name,age);} public abstract void training();}
//篮球教练子类 class BasketballCoach extends Coach{ public BasketballCoach(){} public BasketballCoach(String gender,String name,int age){ super(gender,name,age);} public void teach(){ System.out.println("我是篮球教练");} public void eating(){ System.out.println("篮球教练吃篮球");}}
//乒乓球教练子类 class PingpongCoachextends CoachimplementsSpeakEnglish{ public PingpongCoach(){} public PingpongCoach(String gender,String name,int age){ super(gender,name,age);} publicvoid teach(){ System.out.println("我是乒乓球教练");} publicvoidspeakEnglish(){ System.out.println("作为乒乓球教练,需要学英语");} publicvoideating(){ System.out.println("乒乓球教练吃乒乓球");}}
//篮球运动员子类 class BasketballAthletextends Athlete{ publicBasketballAthlet(){} public BasketballAthlet(String gender,String name,int age){ super(gender,name,age);} public voidtraining(){ System.out.println("每天练习打篮球");} publicvoid eating(){ System.out.println("篮球运动员吃篮球");}}
//乒乓球运动员子类 class PingpongAthleteextends AthleteimplementsSpeakEnglish{ public PingpongAthlete(){} public PingpongAthlete(String gender,String name,int age){ super(gender,name,age);} public void training(){ System.out.println("每天练习打乒乓球");} public voidspeakEnglish(){ System.out.println("作为乒乓球运动员,需要学英语");} public void eating(){ System.out.println("乒乓球运动员吃乒乓球");}}
//运行结果 class CaseAbstractInterface{ public static void main(String[] args){ BasketballCoach bskCoach = new BasketballCoach( "男","男篮教练阿拉蕾",46); System.out.print(bskCoach.getGender()+" "); System.out.print(bskCoach.getName()+" "); System.out.print(bskCoach.getAge()+"\t"); bskCoach.sleeping(); bskCoach.eating(); System.out.println("----------------"); PingpongCoach ppc = new PingpongCoach( "男","乒乓教练刘国梁",42); System.out.print(ppc.getGender()+"\t"); System.out.print(ppc.getName()+"\t"); System.out.print(ppc.getAge()+"\t"); ppc.teach(); ppc.eating(); ppc.speakEnglish(); System.out.println("----------------"); BasketballAthlet bskAthlete = newBasketballAthlet( "女","李如花",19); System.out.print(bskAthlete.getGender()+"\t"); System.out.print(bskAthlete.getName()+"\t"); System.out.print(bskAthlete.getAge()+"\t"); bskAthlete.training(); bskAthlete.eating(); System.out.println("----------------"); PingpongAthlete ppAthlete = new PingpongAthlete( "女","吴甜甜",17); System.out.print(ppAthlete.getGender()+"\t"); System.out.print(ppAthlete.getName()+"\t"); System.out.print(ppAthlete.getAge()+"\t"); ppAthlete.training(); ppAthlete.eating(); ppAthlete.speakEnglish(); }}
运行效果: