Java SE面向对象部分17面向对象高级05.docx
- 文档编号:7590864
- 上传时间:2023-01-25
- 格式:DOCX
- 页数:19
- 大小:191.66KB
Java SE面向对象部分17面向对象高级05.docx
《Java SE面向对象部分17面向对象高级05.docx》由会员分享,可在线阅读,更多相关《Java SE面向对象部分17面向对象高级05.docx(19页珍藏版)》请在冰豆网上搜索。
JavaSE面向对象部分17面向对象高级05
JavaSE面向对象部分-17.面向对象高级(05)
上季内容回顾:
1、对象的多态性
2、抽象类和接口
本季主要知识点:
抽象类和接口的实际应用
1、子类对象可以为父类对象实例化,之后调用的方法都是子类中已经被覆写过的方法。
2、就可以利用此特性,观察抽象类的使用,因为在抽象类中有很多的抽象方法。
抽象类
abstractclassA
{
publicabstractvoidfun();
};
classBextendsA
{
publicvoidfun()
{
System.out.println("B==>HelloWorld");
}
};
classCextendsA
{
publicvoidfun()
{
System.out.println("C==>HelloWorld");
}
};
publicclassDemo01
{
publicstaticvoidmain(Stringargs[])
{
Aa=newB();
a.fun();
}
};
abstractclassA
{
publicabstractvoidfun();
};
classBextendsA
{
publicvoidfun()
{
System.out.println("B==>HelloWorld");
}
};
classCextendsA
{
publicvoidfun()
{
System.out.println("C==>HelloWorld");
}
};
publicclassDemo01
{
publicstaticvoidmain(Stringargs[])
{
Aa=newC();
a.fun();
}
};
抽象类是可以实例化的,通过对象的多态性来实例化
抽象类的主要作用是什么呢?
抽象类就是类似于一个模板操作==>JAVAWEBServlet程序,提供的就是一个模板。
把上面的实际的例子变为程序
abstractclassErr
{
publicvoidprintInfo()
{
System.out.println("姓名:
"+this.getName());
System.out.println("班级:
"+this.getCls());
System.out.println("事由:
"+this.getCau());
}
//得到姓名,由具体的子类去做
publicabstractStringgetName();
//得到班级,由具体的子类去做
publicabstractStringgetCls();
//得到事由
publicabstractStringgetCau();
}
classZhangSanextendsErr
{
publicStringgetName()
{
return"张三";
}
publicStringgetCls()
{
return"小五班";
}
publicStringgetCau()
{
return"因为上课吃东西,所以被老师抓住了,所以要填写违纪卡。
";
}
}
classLiSiextendsErr
{
publicStringgetName()
{
return"李四";
}
publicStringgetCls()
{
return"大五班";
}
publicStringgetCau()
{
return"因为上课睡觉,所以被老师抓住了,所以要填写违纪卡。
";
}
}
publicclassDemo02
{
publicstaticvoidmain(Stringargs[])
{
Erre=newZhangSan();
e.printInfo();
}
}
我们改成李四看看效果哈~
abstractclassErr
{
publicvoidprintInfo()
{
System.out.println("姓名:
"+this.getName());
System.out.println("班级:
"+this.getCls());
System.out.println("事由:
"+this.getCau());
}
//得到姓名,由具体的子类去做
publicabstractStringgetName();
//得到班级,由具体的子类去做
publicabstractStringgetCls();
//得到事由
publicabstractStringgetCau();
}
classZhangSanextendsErr
{
publicStringgetName()
{
return"张三";
}
publicStringgetCls()
{
return"小五班";
}
publicStringgetCau()
{
return"因为上课吃东西,所以被老师抓住了,所以要填写违纪卡。
";
}
}
classLiSiextendsErr
{
publicStringgetName()
{
return"李四";
}
publicStringgetCls()
{
return"大五班";
}
publicStringgetCau()
{
return"因为上课睡觉,所以被老师抓住了,所以要填写违纪卡。
";
}
}
publicclassDemo02
{
publicstaticvoidmain(Stringargs[])
{
Erre=newLiSi();
e.printInfo();
}
}
调用模板成功了哈~
(模板设计)场景:
假设Person分为Worker和Student,工人的属性包括:
姓名、年龄、工资,学生的属性包括:
姓名、年龄、成绩,那么现在人都可以说话,但是工人和学生说的话肯定不一样。
此时,肯定人中的说话方法是固定的,肯定是一个普通方法,只是说话的内容不一样。
abstractclassPerson
{
privateStringname;
privateintage;
publicPerson(Stringname,intage)
{
this.name=name;
this.age=age;
}
publicStringgetName()
{
returnthis.name;
}
publicintgetAge()
{
returnthis.age;
}
publicvoidtalk()
{
//这是要说,内容都在此方法中
System.out.println(this.getContent());
}
publicabstractStringgetContent();
}
classStudentextendsPerson
{
privatefloatscore;
publicStudent(Stringname,intage,floatscore)
{
super(name,age);
this.score=score;
}
publicStringgetContent()
{
return"学生说-->姓名="+super.getName()
+",年龄="+super.getAge()
+",成绩="+this.score;
}
}
classWorkerextendsPerson
{
privatefloatsalary;
publicWorker(Stringname,intage,floatsalary)
{
super(name,age);
this.salary=salary;
}
publicStringgetContent()
{
return"工人说-->姓名="+super.getName()
+",年龄="+super.getAge()
+",工资="+this.salary;
}
}
publicclassDemo03
{
publicstaticvoidmain(Stringargs[])
{
Personp1=newStudent("张三",20,90.0f);
Personp2=newWorker("李四",30,900.0f);
p1.talk();
p2.talk();
}
}
接口的实际应用
分布式代码中最重要的就是要规定好操作的接口。
接口就是定义了一个标准,只要按照此标准代码都可以正常使用。
interfaceA
{
publicStringgetInfo();
}
classBimplementsA
{
publicStringgetInfo()
{
return"B-->HelloWorld";
}
}
classCimplementsA
{
publicStringgetInfo()
{
return"C-->HelloWorld";
}
}
publicclassDemo04
{
publicstaticvoidmain(Stringargs[])
{
Aa=newB();
System.out.println(a.getInfo());
}
}
证明接口对象可以实例化,通过对象多态性进行向上转型,接口是可以实例化的。
我们改成C看看效果
interfaceA
{
publicStringgetInfo();
}
classBimplementsA
{
publicStringgetInfo()
{
return"B-->HelloWorld";
}
}
classCimplementsA
{
publicStringgetInfo()
{
return"C-->HelloWorld";
}
}
publicclassDemo04
{
publicstaticvoidmain(Stringargs[])
{
Aa=newC();
System.out.println(a.getInfo());
}
}
我们发现都可以利用对象多态性完成操作
接口是一个标准。
USB接口 -->只要是实现了USB接口的设备就都可以向USB接口上插。
举例:
假设现在设计一个USB接口,里面只有开始工作和停止工作的操作。
主板上有USB接口,表示可以插入任意的USB设备。
interfaceUSB
{
//表示开始工作
publicvoidstart();
//表示停止工作
publicvoidstop();
}
classMainBoard
{
//只要是USB设备就可以插
publicstaticvoidplugIn(USBusb)
{
usb.start();
usb.stop();
}
}
classMP3implementsUSB
{
publicvoidstart()
{
System.out.println("MP3开始工作");
}
publicvoidstop()
{
System.out.println("MP3停止工作");
}
}
classPrintimplementsUSB
{
publicvoidstart()
{
System.out.println("打印机开始工作");
}
publicvoidstop()
{
System.out.println("打印机停止工作");
}
}
publicclassDemo05
{
publicstaticvoidmain(Stringargs[])
{
USBu=newMP3();
MainBoard.plugIn(u);
}
}
现在看下效果
如果是打印机呢?
interfaceUSB
{
//表示开始工作
publicvoidstart();
//表示停止工作
publicvoidstop();
}
classMainBoard
{
//只要是USB设备就可以插
publicstaticvoidplugIn(USBusb)
{
usb.start();
usb.stop();
}
}
classMP3implementsUSB
{
publicvoidstart()
{
System.out.println("MP3开始工作");
}
publicvoidstop()
{
System.out.println("MP3停止工作");
}
}
classPrintimplementsUSB
{
publicvoidstart()
{
System.out.println("打印机开始工作");
}
publicvoidstop()
{
System.out.println("打印机停止工作");
}
}
publicclassDemo05
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Java SE面向对象部分17面向对象高级05 SE 面向 对象 部分 17 高级 05