一,继承的概念
生活中的继承:子女拥有父母的东西
代码中继承:指的是类与类之间产生了关系,多个类有共性内容后向上抽取
父类:超类、基类
父类的范围往往比较大,但是属性和方法一般都比较少
子类:派生类、衍生类
子类的范围往往更精细,属性、方法一般都比较多
所有类都直接或者间接的继承了 Object 类
注:子类的命名一般使用父类的名字作为后缀
二,继承的好处
三,子类父类的继承关系
关键字:extends
// 父类
public class Animal{
public int age;
public String name;
public void eat(){}
public void sleep(){}
}
// 子类
public class Human extends Animal{
}
注:
四,子类父类中同名成员的问题
4.1 同名变量
当子父类中出现同名变量时,会根据 “就近原则”,优先获取子类中的成员。
如果要在子类中访问父类中的同名变量,可以使用关键字 super 来调用。
super 表示父类的对象。
4.1 同名方法(重写 override)
重写的概念:在继承关系中,子类对父类的功能进行扩展就是方法的重写。
重写的格式:
注:
五,父类属性私有化的问题
问题:当父类属性私有化后,对子类就不可见了,子类无法访问到这些私有属性。
解决:
方式一:父类属性私有化了,但是对外提供的 set/get 方法可以访问,所以子类可以借助父类的 set/get 方法来访问到父类的私有属性
方式二:如果子类想在创建对象时对这些私有化的属性进行初始化,就需要在子类的重载构造函数中调用父类的重载构造函数
class Gun extends Weapon {
// 子弹数量
private int count;
public Gun(String brand, String type, double price, int count) {
super(brand, type, price);
this.count = count;
}
}
六,子父类中构造函数的关系和特点
七, super 关键字
super 表示父类的对象
super 的作用:
八,final 关键字
final 可以修饰:
注:final 修饰成员变量时,这个变量必须手动初始化