




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、15. 面向对象高级(03) 本季要点: final关键字、 简单了解一下抽象类与接口(JAVA中最重要的部分)。 本季讲解了Java中的final关键字、抽象类和接口的基本概念及使用限 制。blog:零基础学JAVAJava SE面向对象部分-15.面向对象高级(03) 2009-01-13上季内容回顾:1、super与this关键字2、方法的重载与覆写本季主要知识点:1、final关键字2、简单了解一下抽象类与接口(是JAVA中最重要的部分)final关键字终结器 final1、被final标记的类不能被继承finalclassA;classBextendsA;验证一下:2、被final标
2、记的方法不能被子类覆写finalclassApublicfinalvoidprint();classBextendsApublicvoidprint();3、被final标记的变量就成为常量,如果成为常量,则以后不能修改classAfinalStringNAME=Hello;publicfinalvoidprint()NAME =World;之前在声明变量的时候是第一个单词的首字母小写,之后每个单词的首字母大写。如果使用final声明常量,则所有单词的字母都要大写。重点:全局常量: static:是所有对象共享的 final:是一个常量 public:表示可以让外部看见public stati
3、c final String FLAG = ; 全局常量抽象类抽象类:包含一个抽象方法的类就称为抽象类。抽象方法:只声明而未实现的方法称为抽象方法。方法没有方法体(方法体:“”),则称为是一个抽象方法。除了抽象方法之外其他的定义如同普通类一样。抽象类 = 普通类的功能 + 抽象方法abstractclassApublicstaticfinalString FLAG =;publicvoidprint()/有方法体,所以是一个普通方法System.out.println(Hello World);
4、/此处定义了一个抽象方法publicabstractvoidfun();publicclassDemo04publicstaticvoidmain(String args)A a =newA();如果要使用一个抽象类,不能直接实例化,抽象类是必须有子类的。抽象类必须被继承,被继承的子类如果不是一个抽象类的话,则肯定要覆写全部的抽象方法。abstractclassApublicstaticfinalString FLAG =;publicvoidprint()/有方法体,所以是一个普通方法System.out.println(Hello World);
5、/此处定义了一个抽象方法publicabstractvoidfun();/子类中覆写了抽象类中的全部抽象方法classBextendsApublicvoidfun()/super.FLAG也可以写成FLAG,因为FLAG已经是全局常量了哈System.out.println(FLAG=+super.FLAG);publicclassDemo04publicstaticvoidmain(String args)B b =newB();b.fun();b.print();验证效果,证明抽象类必须这样写哈抽象类的定义抽象类的使用规则抽象类的思考abstractclassPerson/Person类应
6、该有姓名和年龄privateString name;privateintage;publicPerson(String name,intage) = name;this.age = age;publicvoidsetName(String name) = name;publicvoidsetAge(intage)this.age = age;publicString getName();publicintgetAge()returnthis.age;/定义一个输出方法,但是此方法为抽象方法publicabstractString
7、 getInfo();我们测试一下,发现编译正常,说明抽象类可以有构造方法哈我们继续哈abstractclassPerson/Person类应该有姓名和年龄privateString name;privateintage;publicPerson()/如果已经不是无参的,则必须在子类中明确调用无参构造publicPerson(String name,intage) = name;this.age = age;publicvoidsetName(String name) = name;publicvoidsetAge(intage)this.age = age
8、;publicString getName();publicintgetAge()returnthis.age;/定义一个输出方法,但是此方法为抽象方法publicabstractString getInfo();classStudentextendsPersonpublicStudent(String name,intage)/调用Person类中有两个参数的构造方法super(name,age);/覆写父类的抽象方法publicString getInfo()return姓名:+super.getName()+,年龄:+super.getAge();publi
9、cclassDemo05publicstaticvoidmain(String args)Student s =newStudent(王乾,27);System.out.println(s.getInfo();抽象类中允许有构造方法,但是此构造方法并不是直接实例化抽象类自己的对象使的,如果在抽象类中没有明确的无参构造方法,即:存在有参构造,则必须在子类明确的使用super指明要调用父类中的那个构造方法。注意:如果一个抽象类中没有任何一个抽象方法,则也是不能直接实例化的。abstractclassApublicvoidprint();publicclassDemo06publicstaticvo
10、idmain(String args)newA();final可以声明一个类,但是此类是绝对不能有子类的。而抽象类又必须被子类继承。 =矛盾的finalabstractclassA;验证下效果,我们发现抽象类是不能使用final声明的。如果假设一个类就是抽象方法和常量的集合,那么此时往往都不再使用抽象类声明了,而使用接口声明。接口(interface)interfaceA/接口中包含了抽象方法和全局常量publicstaticString NAME=;publicabstractvoidprint();接口的使用规则(1)一个子类继承接口实际上称为实
11、现了接口。如果实现接口的子类不是抽象类的话,则子类必须覆写接口中的全部抽象方法。interfaceA/接口中包含了抽象方法和全局常量publicstaticString NAME=;publicabstractvoidprint();classBimplementsApublicvoidprint()System.out.println(NAME=+NAME);publicclassDemo09publicstaticvoidmain(String args)B b =newB();b.print();接口使用的事项:1、抽象类使的是extends关
12、键字,表示一个类只能继承一个父类,但是接口不同,一个类可以同时实现多个接口,但是此时子类就必须同时覆写好多个接口中的抽象方法。interfaceA/接口中包含了抽象方法和全局常量publicstaticString NAME=;publicabstractvoidprint();interfaceXpublicabstractvoidfun();classBimplementsA,Xpublicvoidprint()System.out.println(NAME=+NAME);publicvoidfun()this.print();publiccla
13、ssDemo10publicstaticvoidmain(String args)B b =newB();b.fun();抽象类拥有单继承的局限,而接口没有此限制,即:一个子类可以同时实现多个接口。2、既然在定义中已经明确的说明了接口是抽象方法和全局常量的集合,则在定义接口的时候就可以简单定义。interfaceA/接口中包含了抽象方法和全局常量/public static String NAME=;String NAME=;/public abstract void print();voidprint()
14、;classBimplementsApublicvoidprint()System.out.println(NAME=+NAME);publicclassDemo11publicstaticvoidmain(String args)B b =newB();b.print();简化后实现的效果一样哈一般习惯在简化时还在前面加上public,呵呵interfaceA/接口中包含了抽象方法和全局常量/public static String NAME=;publicString NAME=;/public abs
15、tract void print();publicvoidprint();classBimplementsApublicvoidprint()System.out.println(NAME=+NAME);publicclassDemo12publicstaticvoidmain(String args)B b =newB();b.print();接口的使用规则(2)interfaceApublicvoidprintA();interfaceBpublicvoidprintB();interfaceCextendsA,BpublicvoidprintC();classXimplementsC/如
16、果实现了(继承)C接口,则在子类中就必须覆写全部的抽象方法publicvoidprintA()System.out.println(A接口 = Hello World);publicvoidprintB()System.out.println(B接口 = Hello World);publicvoidprintC()System.out.println(C接口 = Hello World);publicclassDemo13publicstaticvoidmain(String args)X x =newX();x.printA();x.printB();x.printC();如果一个子类即要
17、实现一个接口又要继承一个抽象类呢?则此时按以下格式编写:class 类名称 extends 抽象类 implements 接口interfaceXpublicvoidprintX();interfaceYpublicvoidprintY();/一个抽象类也是可以实现接口的abstractclassZimplementsYpublicabstractvoidprintZ();/D类同时继承Z类和实现X接口classDextendsZimplementsXpublicvoidprintX()System.out.println(X =Hello);publicvoidprintY()System.out.prin
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年文化系统公务员录用考试面试真题模拟试卷(无领导小组讨论)
- 教育技术中的信息素养培养与道德教育
- 2024年重庆江北区五里店街道招聘真题
- 2024年益阳桃江县暑期教师选调真题
- 2024年曲靖市辅警真题
- 汉中市杨河学校教师招聘笔试真题2024
- 2025年提高三类医疗器械自查报告填报率的措施
- 2025年公共政策概论机考试题(附答案)
- 2025年公共卫生专业研究生入学考试试题及答案
- 2025年公共卫生与环境管理能力考核试卷及答案
- 2025上海市八年级升九年级数学暑假提升讲义:相似三角形压轴题(六大题型)原卷版
- 2025年工业互联网工程技术人员考核试题题库及答案
- 供货组织方案范文
- 农行OCRM系统讲解
- 2025年《药品经营和使用质量监督管理办法》培训试题及答案
- 2024年云南省县乡教师选调考试《教育学》真题汇编带解析(原创题)
- 工贸安全员考试题库及答案大全
- 羊肚菌栽培及其管理课件
- 教师身体健康管理指南
- 2025高空作业考试试题及答案(完整版)
- 出租车车辆GPS定位承包合同范本
评论
0/150
提交评论