2019-2020-3 《Java 程序设计》第四周知识总结
第五章:继承
1、定义继承关系的语法结构:
[修饰符] class 子类名 extends 父类名 {
类体定义 }
父类中应定义共有的属性和方法,子类除了可以继承父类中的属性和方法外,可以根据自己的具体特点定义自己特有的属性或方法。
【说明】:java类只支持单重继承,即只有一个父类的继承关系。
2、属性的继承与隐藏
属性的继承:
当父子类在同一个包中时,子类可以无条件继承父类的所有非私有属性。
当父子类不在同一包中时(父类被public 修饰),父类的被public 和protected 修饰的属性可以被子类继承。
属性的隐藏:
子类中出现和父类中同名属性的现象称为属性的隐藏。
当子类执行继承自父类的操作时处理的是继承自父类的属性,当子类执行自己定义的方法时,处理的是自己重新定义的同名属性。
3、方法的继承与覆盖
方法的继承:
当父子类定义在同一个包中时,父类的所有非私有方法可以被子类继承。
当父子类不在同一包中时(父类被public修饰),父类的被public和protected修饰的方法可以被子类继承。
方法的覆盖:
子类中定义了和父类具有相同方法头方法的现象称作方法的覆盖。
方法覆盖中,可以通过在方法名前使用不同的对象名或类名来加以区分调用的是父子类中的方法。
子类在重新定义父类已有的方法时,子类方法的访问控制修饰符控制范围至少应该和父类相同才行。
4、继承关系中的构造方法及super关键字
继承关系中,构造方法的使用遵循如下原则:
(1) 创建子类对象时,先调用父类构造方法在调用子类构造方法。
(2) 默认情况下调用父类的无参构造方法。
(3) 对于父类带参的构造方法,子类可以通过在自己的构造方法中使用super关键字来调用,但这条语句必须是子类构造方法中的第一条可执行语句。
Java中,关键字super关键字的用法有以下三种:
(1) 在子类构造方法中,可以通过super关键字调用父类的构造方法,要求该语句是子类构造方法的第一条可执行语句。
(2) 可以在子类通过super.父类属性调用父类属性,如果次属性不涉及属性的隐藏时,super.可以省略。
(3) 可以在子类中通过super.父类方法,调用父类中定义的方法,如果被调用的方法不涉及到覆盖时,super.可以省略。
【注意】this和super不能再static修饰的方法内使用。
5、抽象方法和抽象类
(1)抽象类:用abstract修饰的类叫做抽象类,抽象类不能实例化。
(2)抽象方法:用abstract修饰的方法叫做抽象方法,抽象方法只有方法头没有方法体。
(3)抽象方法必须定义在抽象类中。
6、多态性
通过覆盖父类的方法来实现,在运行时根据传递的对象引用,来调用相应的方法。若将子类对象的引用传递给声明为父类的参数,若子类有这个方法,就调用子类的方法,若子类没有这个方法,就调用父类的方法。
Instanceof:判断一个对象是否是一个类的实例,
对象名 instanceof 类名
7、final关键字
(1) 被fina修饰的类不能被继承,即不能有子类。
(2) 被final修饰的方法不允许子类隐藏可以继承的final方法。
(3) 被final修饰的常量在运行期间不允许再发生变化。
2019-2020-3《Java 程序设计》第四周学习总结
1.通过第二周的学习,利用教材和老师在蓝墨云上的一些教学视频以及通过老师和同学的博客以及一些课外资料,充分学习了第四章的内容,学习的内容有:子类与父类、子类的继承性、子类与对象、成员变量的隐藏和方法重写、super关键字、final关键字、对象的上转型对象、继承与多态、abstract类和abstract方法、面向抽象编程、开闭原则。通过这周的学习,对java有了更加深入的理解,也学会了许多实用的东西。
2.通过手打第四章代码,对语法有一定的帮助,并在调试完代码后上传至码云仓库,并提交脚本。
例子1:
例子2:
例子3:
例子4:
例子5:
例子6:
例子7:
例子8:
例子9:
例子10:
例子11:
例子12:
例子13:
面向抽象编程例子:
脚本截图:
注:我的码云链接:https://gitee.com/zzm-zcc/zhang_zhi_min
2019-2020-3 《Java 程序设计》第四周练习题生疏题、错题总结
1、下列说法正确的是(ACD)
A .使用extends关键字定义一个类的子类。
B .Java与C++类似,支持多继承,即子类可以有一个或多个父类。
C .Object是所有类的祖先类。
D .如果子类继承父类的成员变量作为自己的一个成员变量,则该成员变量可以被子类中自己定义的任何实例方法操作。
2、下列说法错误的是(AD)
A .继承的成员变量或方法的访问权限可以由子类重新定义。
B .若子类和父类不在同一包,子类只继承父类中的protected和public访问权限的方法作为子类的方法。
C .继承关系的UML类图用一个实线连接两个类,起始端是子类,重点端是父类,终点端使用空心三角形表示实线的结束。
D .如果在类本身创建一个对象,则该对象不可以通过“.”运算符访问继承的protected变量。
3、如果子类和父类不在同一包中,子类不继承父类的友好成员变量。(A)
A .true
B .false
4、instanceof主要用来判断一个类是否实现了某个接口,或者判断一个实例对象是否属于一个类。(A)
A .true
B .false
5、下列关于Override的说法,正确的是(ABC)
A .子类所声明的成员变量的名字和从父类继承来的成员变量名字相同但类型不同时,子类会隐藏所继承的成员变量。
B .除了继承的方法之外,子类新定义的方法可以操作子类继承的成员变量。
C .子类重写的方法,方法名字、参数个数、参数类型和父类的方法完全相同。
D .重写方法可以操作被子类隐藏的成员变量和方法。