版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
程序设计基础
-----孔美云本单元内容抽象类的定义抽象类的使用规则接口的格式继承抽象类实现接口接口继承接口的实际应用为抽象类与接口实例化适配器设计抽象类与接口之间的关系抽象类
Java中也可以创建一种类专门用来当作父类,这种类称为“抽象类”。抽象类的作用类似“模板”,其目的是要设计者依据它的格式来修改并创建新的类。但是并不能直接由抽象类创建对象,只能通过抽象类派生出新的类,再由它来创建对象。抽象类抽象类的定义及使用规则如下:包含一个抽象方法的类必须是抽象类。抽象类和抽象方法都要使用abstract关键字声明。抽象方法只需声明而不需要实现。抽象类必须被子继承,子类(如果不是抽象类)必须覆写抽象类中的全部抽象方法。抽象类抽象类的定义格式:abstractclass抽象类名称{
属性;
访问权限返回值类型方法名称(参数){//普通方法[return返回值];}
访问权限abstract返回值类型方法名称(参数);
//抽象方法//在抽象方法中是没有方法体的}抽象类案例:定义一个抽象类abstract
classA{ //是定义了一个抽象类
public
static
finalStringFLAG="CHINA"; //全局常量
privateStringname="李兴华"; //定义一个普通的属性
public
voidsetName(Stringname){
=name; }
publicStringgetName(){
return
; }
public
abstract
voidprint(); //定义抽象方法}抽象类继承抽象类classBextendsA{ //继承抽象类,因为B是普通类,所以必须覆写全部抽象方法
public
voidprint(){ System.out.println("FLAG="+FLAG); System.out.println("姓名
="+super.getName()); }}public
classAbstractDemo02{
public
static
voidmain(Stringargs[]){ Bb=newB(); b.print(); }}子类覆写了抽象方法,然后在主方法中通过子类的实例化对象就可以调用被子类覆写过的方法抽象类抽象类的图形表示抽象类注意:抽象方法不要使用private声明。在使用abstract关键字修饰抽象方法时不能使用private修饰,因为抽象方法必须被子类覆写,而如果使用了private声明,则子类是无法覆写的。.接口接口是Java中最重要的概念之一,它可以被理解为一种特殊的类,是由全局常量和公共的抽象方法所组成。接口的定义格式:
interface接口名称{
全局常量;
抽象方法;}需要注意的是,在接口中的抽象方法必须定义为public访问权限,这是绝对不可改变的。
提示:在接口中如果不写public,则也是public访问权限。接口范例:接口的定义interfaceA{ //定义接口A
public
static
finalStringAUTHOR="李兴华"; //全局常量
public
abstract
voidprint(); //抽象方法
public
abstractStringgetInfo(); //抽象方法}可以简化成:interfaceA{ //定义接口A StringAUTHOR="李兴华"; //等价于:publicstaticfinalStringAUTHOR”李兴华”;
voidprint(); //等价于:publicabstractvoidprint(); StringgetInfo(); //等价于:publicabstractStringgetlnfo();}接口接口图形
与抽象类一样,接口若要使用也必须通过子类,子类通过implements关键字实现接口。接口实现接口的格式:class子类implements接口A,接口B,…{}
一个子类可以同时实现多个接口,那么这实际上就摆脱Java的单继承局限。接口案例:interfaceA{ //定义接口A
publicStringAUTHOR="李兴华"; //全局常量
public
voidprint(); //抽象方法
publicStringgetInfo(); //抽象方法}interfaceB{ //定义接口B
public
voidsay(); //定义抽象方法}classXimplementsA,B{ //X类同时实现A和B两个接口
public
voidsay(){ System.out.println("HelloWorld!!!"); }
publicStringgetInfo(){
return"HELLO"; }
public
voidprint(){ System.out.println("作者:"+AUTHOR); }}一个子类同时实现了两个接口,这样在子类中就必须同时覆写两个接口中的全部抽象方法。接口接口实现的类图接口学生实训:1、定义一个ClassName接口,接口中只有一个抽象方法getClassName();设计一个类Company,该类实现接口ClassName中的方法getClassName(),功能是获取该类的类名称;编写应用程序使用Company类。。接口继承抽象类实现接口的格式:class子类extends抽象类implements接口A,接口B,…{}子类同时继承抽象类和实现接口的案例:
interfaceA{ //定义接口A
publicStringAUTHOR="李兴华"; //全局常量
public
voidprint(); //抽象方法
publicStringgetInfo(); //抽象方法}abstract
classB{ //定义抽象类B
public
abstract
voidsay(); //定义抽象方法}接口classXextendsBimplementsA{ //X类线继承B类,再实现A接口
public
voidsay(){ System.out.println("HelloWorld!!!"); }
publicStringgetInfo(){
return"HELLO"; }
public
voidprint(){ System.out.println("作者:"+AUTHOR); }}接口范例:抽象类实现接口:
interfaceA{ //定义接口A
publicStringAUTHOR="李兴华"; //全局常量
public
voidprint(); //抽象方法
publicStringgetInfo(); //抽象方法}abstract
classBimplementsA{ //定义抽象类B,实现接口A
public
abstract
voidsay(); //定义抽象方法}接口接口的继承格式:interface子接口extends父接口A,父接口B,...{}范例:接口的多继承interfaceA{ //定义接口A
publicStringAUTHOR="李兴华"; //全局常量
public
voidprintA(); //抽象方法}interfaceB{
public
voidprintB();}interfaceCextendsA,B{
public
voidprintC();}接口学生实训:
定义Biology(生物),Animal(动物),Man(人)三个接口,其中Biology声明了breath()抽象方法,Animal接口声明了hasSex()和eat()抽象方法,Man接口声明了think()和study()抽象方法。定义NormalMan类实现上述3个接口,实现它们声明的抽象方法(仅显示相应的功能信息)
为抽象类与接口实例化
Java中可以通过对象的多态性为抽象类和接口实例化,这样再使用抽象类和接口时即可调用本子类中所覆写过的方法范例:为抽象类实例化abstract
classA{
public
abstract
voidprint(); }classBextendsA{
public
voidprint(){
System.out.println("HelloWorld!!!"); }};public
classAbstractCaseDemo01{
public
static
voidmain(Stringargs[]){ Aa=newB();
a.print(); }}
为抽象类与接口实例化
范例:为接口实例化interfaceA{
public
abstract
voidprint();};classBimplementsA{
public
voidprint(){ System.out.println("helloworld!"); }};public
classInterfaceCaseDemo01{
public
static
voidmain(String[]args){ Aa=newB(); a.print(); }}程序通过对象的多态性为抽象类及接口进行实例化,这样所调用的方法就是被子类所覆写过的方法。
接口的实际应用——制定标准
接口是Java解决多继承局限的一种手段,而且从前面的内容读者也已经清楚可以通过对象多态性为接口进行实例化,但是接口在实际中更多的作用是用来制订标准。例如,U盘和打印机都可以插在计算机上使用,这是因为它们都实现了USB的接口,对于计算机来说,只要是符合了USB接口标准的设备就都可以插进来。
接口的实际应用——制定标准
范例:制订USB标准interfaceUSB{ //定义了USB接口
public
voidstart(); //USB设备开始工作
public
voidstop(); //USB设备结束工作}classComputer{
public
static
voidplugin(USBusb){ //电脑上可以插入USB设备
usb.start(); System.out.println("===========USB设备工作========"); usb.stop(); }};
接口的实际应用——制定标准
classFlashimplementsUSB{
public
voidstart(){ //覆写方法
System.out.println("U盘开始工作。"); }
public
voidstop(){ //覆写方法
System.out.println("U盘停止工作。"); }};classPrintimplementsUSB{
public
voidstart(){ //覆写方法
System.out.println("打印机开始工作。"); }
public
voidstop(){ //覆写方法
System.out.println("打印机停止工作。"); }};
接口的实际应用——制定标准
classFlashimplementsUSB{
public
voidstart(){ //覆写方法
System.out.println("U盘开始工作。"); }
public
voidstop(){ //覆写方法
System.out.println("U盘停止工作。"); }};classPrintimplementsUSB{
public
voidstart(){ //覆写方法
System.out.println("打印机开始工作。"); }
public
voidstop(){ //覆写方法
System.out.println("打印机停止工作。"); }};public
classInterfaceCaseDemo02{
public
static
voidmain(Stringargs[]){ Computer.plugin(newFlash()); Computer.plugin(newPrint()); }}接口就是规定出了一个标准,计算机认的只是接口,而对于具体的设备计算机本身并不关心。
接口的实际应用——制定标准
学生实训:模拟主板上的PCI插槽实训内容:主板上的PCI插槽就是现实中的接口你可以把声卡,显卡,网卡都插在PCI插槽上,而不用担心那个插槽是专门插哪个的原因是做主板的厂家和做各种卡的厂家都遵守了统一的规定包括尺寸,排线等等但是各种卡的内部结构是一样的么?
设计模式——适配器设计
一个类要实现一个接口,则必须要覆写此接口中的全部抽象方法,那么如果此时一个接口中定义的抽象方法过多,但是在子类中又用不到这么多抽象方法,则肯定很麻烦,所以此时就需要一个中间的过渡,但是此过渡类又不希望被直接使用,所以将此过渡类定义成抽象类最合适,即一个接口首先被一个抽象类先实现(此抽象类通常称为适配器类),并在此抽象类中实现若干方法(方法体为空),则以后的子类直接继承此抽象类,就可以有选择地覆写所需要的方法。
设计模式——适配器设计
设计模式——适配器设计
范例:适配器设计实现interfaceWindow{ //定义Window接口,表示窗口操作
public
voidopen(); //打开
public
voidclose(); //关闭
public
voidactivated(); //窗口活动
public
voidiconified(); //窗
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 安徽亳州花沟中学2026届中考五模历史试题含解析
- 某电子厂产品装配流程管理
- 玉屏风散调节上呼吸道微生态的实验研究:作用、机制与展望
- 猪高效组成型启动子筛选技术与应用研究
- 猪轮状病毒GD - 01 - 2015全基因序列解析与双夹心ELISA检测技术构建研究
- 橡胶制品厂硫化作业细则
- 某玻璃厂玻璃切割规范
- 2026年企业人力资源管理全流程解析
- 2026年互联网域名管理办法及域名注册解析注销与争议解决实务测试题
- 2026年农村三资管理平台应用及村级财务线上审批流程试题
- (二模)2026年合肥市高三第二次教学质量检测语文试卷(含答案)
- 广东省广州市白云广雅中学2024-2025学年八年级下学期数学期中考试卷(含答案)
- 2025年四川省烟草专卖局(公司)招聘考试笔试试题(含答案)1
- 2026年西部计划志愿者招募考试题库及答案
- 2025-2026人教版高中地理选择性必修二期末综合检测练习卷(含解析)
- 产业链数字化全链条协同机制研究
- 2026年水利工程质量检测员网上继续教育考试题库200道完整版
- GB/Z 141-2025蓄电池和蓄电池组起动用铅酸蓄电池减少爆炸危险的装置性能检验的试验方法
- 校服代售合同范本
- 2026年河南交通职业技术学院单招职业适应性考试题库及参考答案详解
- 前瞻性队列研究的随访失访控制策略
评论
0/150
提交评论