Java SE面向对象部分18面向对象高级06Word格式文档下载.docx
- 文档编号:15857957
- 上传时间:2022-11-16
- 格式:DOCX
- 页数:11
- 大小:358.47KB
Java SE面向对象部分18面向对象高级06Word格式文档下载.docx
《Java SE面向对象部分18面向对象高级06Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《Java SE面向对象部分18面向对象高级06Word格式文档下载.docx(11页珍藏版)》请在冰豆网上搜索。
abstractclassA
{
publicabstractvoidfun();
interfaceB
publicvoidprint();
}
}
我们来验证测试下哈~发现生成A$B.class,表示B作为A的内部接口,证明一个抽象类中可以包含一个内部接口。
那怎么使用呢?
我们看下面哈~
首先我们先子类X覆写父类A方法但不覆写接口B中的方法
classXextendsA
//覆写父类fun()方法
publicvoidfun()
System.out.println("
HelloWorld!
!
"
);
发现编译没有问题哈~
现在我们测试覆写接口方法哈~
Bb=newY();
b.print();
classYimplementsB
//覆写父类接口中的方法print()
publicvoidprint()
HelloJava!
现在我们加上主方法进行测试哈~
publicclassDemo01
publicstaticvoidmain(Stringargs[])
Aa=newX();
a.fun();
证明一个抽象类中可以包含一个接口,之后在抽象类的子类中可以有选择的是否实现抽象类中的接口。
2、一个接口中能否包含一个抽象类呢?
同上,都是可以选择是否实现
interfaceA
publicvoidfun();
abstractclassB
publicabstractvoidprint();
下面我们写上个子类,检验一下是否可以有选择实现抽象类B
classXimplementsA
}
验证可以哈~
下面覆写抽象类B中print()方法
newY().print();
classYextendsB
publicclassDemo02
3、观察以下的程序,验证输出结果
publicA()
this.print();
classBextendsA
privateinti=30;
publicB(inti)
this.i=i;
i="
+i);
publicclassDemo03
newB(50);
输出结果为0哈,这与子类对象实例化过程有关哈
回顾:
子类对象的实例化过程
·
子类对象使用new关键字要调用构造方法
调用构造方法时的顺序:
先去调用父类中的构造方法(默认为无参构造),之后再调用子类中的构造方法。
调用构造方法的目的:
为其内部的属性初始化
子类中的属性在没有完成父类中的构造方法之前,所有的内容都是默认值,整型是“0”。
思考:
我们知道一个子类如果实现了一个接口则肯定要覆写接口中的全部抽象方法。
那问?
是否可以采用一种方式,让子类可以有选择的去覆写自己真正需要的方法。
interfaceDoor
//开门
publicvoidopenDoor();
//关门
publicvoidcloseDoor();
//维修
publicvoidrepairDoor();
//拆除
publicvoidremoveDoor();
//锁门
publicvoidlockDoor();
classDimplementsDoor
//子类现在肯定要覆写里面全部的抽象方法
矛盾点:
子类不需要覆写全部的方法
如果子类直接实现了接口则肯定要覆写全部的方法
解决:
如果中间加入了一个过渡端呢?
接口
-->
过渡端-->
子类
|-
此过渡端不应该被直接使用。
抽象类
过渡端使用抽象类实现最合适,因为抽象类可以实现一个接口同时可以有一些抽象方
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Java SE面向对象部分18面向对象高级06 SE 面向 对象 部分 18 高级 06