一、继承的基本概述
继承的概述
就是子类继承父类的属性和行为,使得子类对象具有与父类相同的属性、相同的行为。子类可以直接访问父类中的非私有的属性和行为。
继承的格式
public class 子类 extends 父类{
}
继承的优缺点
(1)子类自动拥有了父类的非私有的成员,子类也可以有自己的成员。
(2)提高了代码的互用性和扩展性。
(3)耦合性太高,不利于开发原则:高内聚低耦合。
(4)java中只支持单继承。
二、继承的特点
继承中成员变量的访问特点
子类和父类的成员变量重名时,如Zi类和Fu类中都有int num;变量,可以用zi.num或fu.num进行访问子类或父类中的变量。也可以用this和super关键字,this代表当前的对象,super代表父类对象,用this.num和super.num进行访问。
如果局部变量中也有num时,直接访问num,会根据就近原则,访问这个局部变量的num.
2.继承中成员方法的访问特点
如果出现重名的方法,会使用子类的方法;不重名的情况下,现在子类中寻找该方法,找不到从父类中寻找。
三、继承中的方法重写
方法重写的概念
子类中出现与父类一模一样的方法时(返回值类型,方法名和参数列表都相同),会出现覆盖效果,也称为重写或者复写。声明不变,重新实现 。
2.注意事项
(1)子类和父类的方法名和参数列表必须一样。
(2)子类的返回值小于等于父类的返回值范围。 建议父类的返回值是什么,在子类的返回值就写什么类型。
(3)子类的权限必须是大于等于父类的权限, public > protected > (default) > private。
3.应用场景
当父类满足不了子类的需求的时候,我们要重写父类中的方法(当父类满足了子类需求的时候,不需要重写直接使用即可),在使用的时候,使用的是子类重写父类后的方法,使子类有了特有的功能,也保有了父类的功能。
4.继承中的构造方法
(1)构造方法的名字是与类名一致的。所以子类是无法继承父类构造方法的。
(2)构造方法的作用是初始化成员变量的。所以子类的初始化过程中,必须先执行父类的初始化动作。子类的构造方法中默认有一个 super() ,表示调用父类的构造方法,父类成员变量初始化后,才可以给子类使用。
(3)如果不想让子类默认调用父类的无参构造,必须是在子类中的构造方法的第一行写,super(无参/有参),就不会默认调用父类的无参构造。