一、继承
(一)继承的介绍
1.继承的作用
一些类都有共同的属性和行为时,创建一个包含这些共同属性和行为的父类,子类都去继承这个父类(相当于拷贝了父类当中的所有内容,可以重复使用父类的代码,减少代码的重复性)
2.继承的关键字:extends
3.继承的格式:
修饰符 class 子类名 extends 父类名
4.子类可以添加自己的特有属性和方法,从而扩展出父类没有的功能和属性,
(二)、子类不能继承父类的内容
1.构造器:子类和父类都有属于自己的独立构造器,只能用来初始化自己的属性,因此不能继承
2.子类可以继承父类的私有成员。但不能直接访问,只能通过提供的公有方法来进行取值和赋值
3.子类能不能继承父类的静态成员
不能。但可以直接调用,因为静态方法是共享的。子类名.父类静态方法名 会先在子类当中找,如果找不到,则会取父类中找
(三)、继承之后成员变量的特点
1.继承之后的访问原则:就近原则。子类有找子类,子类没有找父类,父类没有则报错
2.访问格式:
A.变量名不重名时,可以直接写:变量名
B.重名时的调用方法
访问本类的成员变量:this.变量名
访问父类的成员变量:super.变量名
访问本类的局部变量:变量名
(四)、继承之后成员方法的特点
1.继承之后的访问原则:与成员变量相同,就近原则。子类有找子类,子类没有找父类,父类没有则报错
2.调用成员方法的规则
A.方法名不重名时,可以直接写:方法名
B.重名时的调用方法
访问本类的成员方法:this.方法名
访问父类的成员方法:super.方法名
(五)、方法重写
1.方法重写的作用
父类的方法,不能满足于子类的需求时,子类可以重写该方法
2.重写格式:申明不变,重新实现
修饰符,返回值类型,方法名(参数列表) 都不能变,方法体重新写
注意:重写的方法需要加一个注解 @Override,有利于提高代码的可读性和维护性
(六)、继承之后的构造器的特点
1.子类调用自己的构造器时,都会先去调用父类的无参构造器初始化父类
因为:子类构造器中,首行都会默认有一句“super();”,若写出来,也只能放在首行
(七)、this和super的运用
1.在子类的构造器中,可以使用“super(…)”调用父类的有参构造器;也可以使用“this(…)”调用本类的有参构造器
2.注意:在一个构造器中,this和super只能存在一个,且必须放在首行
3.在本类构造器之间通过this相互调用时,最后一个被调用的构造器必须通过super调用父类的构造器
(八)、继承的特点
1.java只支持单继承。
2.支持多层继承(同样适用就近原则。即本类没有找父类,父类没有找父类的父类)
3.一个类可以被多个类继承
二、抽象类
(一)、抽象类的介绍
1.抽象的概念:当父类认为所有子类都要实现某个功能,但所有子类实现逻辑都不同时,父类可以将该方法定义成抽象方法,以此来约束子类实现该方法
2.抽象关键字 abstract:可以修饰方法,也可以修饰类
3.abstract修饰方法的格式
修饰符 abstract 返回值类型 方法名();
注意:抽象方法不需要大括号
4.abstract修饰类的格式
修饰符 abstract class 类名称{}
5.一个类中如果包含抽象方法,那么该类必须定义成抽象类
(二)、抽象类的特征
1.父类是抽象类的,子类必须重写父类所有的抽象类,否则该子类也必须是抽象类
2.抽象类失去了创建对象的能力,但是获取了定义抽象方法的能力。但静态方法任然可以直接通过 类名.方法名 直接调用
3.抽象类中可能含有抽象方法,因为抽象方法没有方法体,故没有必要实例化。
4.子类全部覆盖重写父类的抽象方法之后,才能创建对象
(三)、模板设计模式
1.设计模式是什么:大家都知道的,很多人都在用的,优秀的代码设计总和
2.特点:减少代码重复性,提高代码复用性、可读性
3.模板设计模式:先实现已知部分,未知部分抽象化
4.职业介绍的模板设计模式