举例说明java面向对象思想的体现:抽象类、接口
来源:互联网 发布:深圳软件产业基地 顺丰 编辑:程序博客网 时间:2024/05/29 10:23
面向对象思想概述
随着需求的更改,功能的增多,需要把不同的功能进行封装,其中功能类似的封装在一起,这样一来结构就清晰了很多。用的时候找到对应的类就可以了。这就是面向对象的思想。
面向对象是一种更符合我们思想习惯的思想,可以将复杂的事情简单化。学习编程语言,就是为了模拟现实世界的事物,实现信息化。
面向对象和面向过程的区别
面向过程强调的是每一个功能的步骤;面向对象强调的是对象,然后由对象去调用功能。
面向对象的特点
(1)封装(encapsulation);
(2)继承(inheritance);
* 乒乓球运动员和篮球运动员。乒乓球教练和篮球教练。
* 为了出国交流,跟乒乓球相关的人员都需要学习英语。
*请分析这个案例中有哪些抽象类,哪些接口,哪些具体类?
* 教练和运动员都是中国人,人可作为此处的顶级抽象类;
* 教练可作为人的抽象类,子类有乒乓球教练、篮球教练;
* 运动员可作为人的抽象类,子类有乒乓球运动员、篮球运动员;
* 额外的技能(学习英语)可作为接口,由乒乓球运动员类去实现;
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;}
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();
}
随着需求的更改,功能的增多,需要把不同的功能进行封装,其中功能类似的封装在一起,这样一来结构就清晰了很多。用的时候找到对应的类就可以了。这就是面向对象的思想。
面向对象是一种更符合我们思想习惯的思想,可以将复杂的事情简单化。学习编程语言,就是为了模拟现实世界的事物,实现信息化。
面向对象和面向过程的区别
面向过程强调的是每一个功能的步骤;面向对象强调的是对象,然后由对象去调用功能。
面向对象的特点
(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;}
}
//定义接口,已扩展乒乓球有关的子类功能
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();
}
}
运行效果:
1 0
- 举例说明java面向对象思想的体现:抽象类、接口
- 一个例子体现JAVA中的面向对象思想,接口(抽象类)的用处
- 做一个饲养员给动物喂食物的例子体现JAVA中的面向对象思想,接口(抽象类)的用处
- java面向对象思想之接口、抽象
- Java面向对象思想、类、抽象类、多态、接口
- 写个简单例子人吃饭,体现面向对象编程,包含接口,抽象类的用处。
- COM思想很好的体现了面向接口编程思想。
- 关于Java抽象类和接口的区别与举例说明
- 【java】面向对象(类、抽象类、接口
- java面向对象,接口和抽象类.
- java面向对象二:抽象类、接口
- Java面向对象高级--抽象类与接口的应用
- 从面向对象思想上去理解抽象类和接口的区别
- java 面向对象 接口 抽象
- 面向接口、面向对象;接口、抽象类的理解
- 面向对象的抽象类与接口
- Java千百问_05面向对象(003)_java中抽象概念如何体现的
- javascript中面向对象思想的体现(一)
- A Guide To using IMU (Accelerometer and Gyroscope Devices) in Embedded Applications.
- CSS3 背景图 插入 SVG 或图片 base64
- 设计模式-解释器模式
- 为自增(++)自减(--)运算符正名
- 悼念512汶川大地震遇难同胞
- 举例说明java面向对象思想的体现:抽象类、接口
- 查看IP,DNS,GATEWAY
- UML中的泛化、实现、依赖、关联、聚合、组合6种关系
- 标识寄存器
- jaocb操作office
- 文件二进制读写学生信息
- 成为Java高手的25个学习要点
- win10+Ubuntu16.04 双系统
- ndk生成ARM汇编(附代码)