一、继承的基本概念:
继承是面向对象三大特征之一,可以使得子类具有父类的属性和方法,子类同时也可以重新定义和追加方法。JAVA中支持多层继承和单继承,不支持多继承
继承的格式
public class 子类 extends 父类{ }
二、继承的特点:
1、子类可以有父类的内容。
2、子类也可以有自己特有的内容。
三、继承的优缺点:
优点:
1、提高了代码的复用性。(多个类的相同内容可以写在同于一个类中继承)
2、提高了代码的维护性。(如果方法中的代码需要修改时,只需要修改一次即可)
缺点:
继承让类与类之间发生了关系,类的耦合性增加了,当父类发生变化时,子类实现也会发生变化,削弱了子类的独特性。
四、什么时候使用继承?
当我们有两个类时,如果A类是B类的一种,或者说相反,就说明他们之间有继承关系。
例如:苹果和水果 动物和熊猫
五、继承中访问特点
1、变量访问特定
访问顺序是子类局部范围 > 子类的成员范围 > 父类成员范围
2、构造方法访问特点
子类中所有的构造方法默认会访问父类中的无参构造方法。原因是:子类会继承父类的数据,可能还会使用父类的数据,那么在子类初始化之前就要对父类完成初始化,每一个子类构造方法之前都有一条隐藏的super()语句,如果我们在父类中给出了带参构造方法的话,系统默认的无参构造方法就会消失,那么这里就会报错。
这里推荐每一次都要给出父类的默认构造方法和带参构造方法;
3、成员方法的访问特点
类比于成员变量
六、super关键字
回顾一下this关键字,this关键词的作用是结局局部变量隐藏成员变量的问题;
super是代表父类存储空间的标识符(可以理解为父类的对象引用)
super.变量;//访问父类的成员变量
super.成员方法;//访问父类的成员方法
super();//访问父类的构造方法
七、方法重写
继承中子类和父类出现了一样的方法声明;当子类需要父类的功能,而功能主体子类有自己特有内容是,可以重写父类功能,又定义了子类的特有功能
子类Phone
public class Phone {
public void call(String name) {
System.out.println("给" + name + "打电话");
}
}
父类NewPhone
public class NewPhone extends Phone {
@Override
public void call(String name) {
System.out.println("开启视频通话");
super.call("李小龙");
}
}
@Override的作用是检测我们方法重写的正确性;
这里不难看出子类对call方法进行了方法重写,增加了自己特有功能,我们在使用方法重回时需要注意父类私有方法不能被重写,子类重写的方法访问权限不能比父类小。
初学者个人见解,希望大家多多点评。感谢!