第五周课程总结
一、继承
1.类的继承格式
(1).使用关键字extends
可以实现继承的关系,但是这个关键字的本身含义是“扩展”,更准确的说是一个类扩展已有类的功能,所以在其他的书中也会把子类称为派生类。
(2).格式:class 父类 {}
、class 子类 extends 父类 {}
。
2.继承的限制
(1).只允许单继承,不能使用多重继承,即:一个子类只能继承一个父类。
(2).允许多层继承,即:一个子类可以有一个父类,一个父类还可以有一个父类。
(3).子类是不能直接访问父类中的私有成员的,但子类可以调用父类中的非私有方法,但是不能直接调用父类中的私有成员。
3.继承的进一步研究
(1).子类对象在实例化之前必须首先调用父类中的构造方法之后再调用子类自己的构造方法。
(2).在继承的关系中也存在着方法覆写的概念,所谓的方法覆写就是指子类定义了与父类中同名的方法。
(3).但是在方法覆写时必须考虑到权限,即被子类覆写的方法不能有比父类方法更加严格的访问权限,即:privat<default<public
,所以如果在父类中使用public
定义的方法,子类的访问权限必须是public
,否则程序会无法编译。
(4).如果要在子类的方法中访问父类的方法,则使用super.方法()
的形式来访问。
(5).属性也可以覆盖,即:子类声明了与父类同名的属性。
(6).子类如果和父类声明了相同名称的属性,则在子类中直接访问的时候肯定是采用“就近访问原则”,即先找到本类中的属性,如果此时用调用父类中的属性,直接使用super.属性
格式即可。
(7).方法的重载与覆写的区别:
单词 |
Overloading |
Overriding |
定义 |
方法名称相同,参数的类型或个数不同 |
方法名称、参数类型、返回值类型全部相同 |
定义 |
对权限没有要求 |
被覆写的方法中不能有更严格的权限 |
范围 |
发生在一个类中 |
发生在继承中 |
二、super
关键词的作用
1.使用super
可以从子类中调用父类中的构造方法、普通方法、属性。
2.使用super
调用父类中指定构造方法的操作,与this
调用构造方法的要求一样,语句必须放在子类构造方法的首行。
3.this
和super
都可以调用构造方法,但两者是不可以同时出现的,因为两者调用构造的时候都必须放在构造方法的首行。
4.无论子类怎样操作,最终都是要先调用父类中的构造方法。
5.this
与super
的区别:
属性访问 |
访问本类中的属性,如果本类没有此属性则从父类中继续查找 |
访问父类中的属性 |
方法 |
访问本类中的方法,如果本类没有此方法则从父类中继续查找 |
直接访问父类中的方法 |
调用构造 |
调用本类构造,必须放在构造方法的首行 |
调用父类构造,必须放在子类构造方法的首行 |
特殊 |
表示当前对象 |
无此概念 |
三、final
关键词
1.final
在Java
中表示的意思是最终的意思,也可以称为完结器。
2.可以使用final
关键字声明类、属性、方法,在声明时要注意以下几点:
(1).使用final
声明的类不能有子类;
(2).使用final
声明的方法不能被子类所覆写;
(3).使用final
声明的变量即成为常量,常量不可以修改。
3.在使用final
声明变量的时候,要求全部的字母大写。
4.如果一个程序中的变量使用public static final
声明,则此变量将称为全局变量,如public static final String IFO="www.lichen.com";
。
四、抽象类
1.在Java
中可以创建一种类专门用来当作父类,这种类称为“抽象类”。
2.抽象类的作用有点类似“模板”,其目的是要设计者依据它的格式来修改并创建新的类。
3.抽象类的定义及使用规则如下:
(1).包含一个抽象方法的类必须是抽象类;
(2).抽象类和抽象方法都要使用abstract
关键字声明;
(3).抽象方法只需声明而不需要实现;
(4).抽象类必须被子类继承,子类(如果不是抽象类)必须覆写抽象类中的全部抽象方法。
4.抽象类的定义就是比普通类多了一些抽象方法,其他地方与普通类的组成基本上都是一样的。
5.抽象方法不要使用private
声明,在使用abstract
关键字修饰抽象方法的时候不能使用private
修饰,因为抽象方法必须被子类覆写,而如果使用了private
声明,则子类是无法覆写的。
第五周课程总结&试验报告(三)
原文:https://www.cnblogs.com/lcbxhda/p/11595588.html