Java Core Note Ⅰ----继承

139 阅读2分钟

概念

Java中有一个非常重要的概念,也是Java的三大特性之一——继承(inheritance)。继承的基本思想,在基于已有的类创建新的类能够“复用”已有类的属性、方法。这个特性和显示中的继承也非常相似,子可以继承父允许继承的东西。

public class Father{
    父字段;
    父方法;
}
public class Son extends Father{
    //此时已经继承了Father类的字段和方法
}
  • 其实并不是父类中的所有的字段和方法都是能够被继承的,而是被父类public、protected的字段才可以被子类继承。
  • 为了保证类的封装性,一般不会让子类继承父类属性/字段,因为字段为了保证封装性会被声明为私有。而要使用的的话可以在父类提供Get、Set方法或者提供有参构造,对其字段进行间接使用。

构造方法

  • 而构造方法,子类的构造方法会隐式地调用父类的无参构造:supper()。如果父类没有无参构造,此时需要显示的在子类构造方法调用父类的构造,并且必须在子构造方法的第一行。这是为什么呢?因为谁也不知道程序员会不会在构造中使用父类的方法,如果不先把父类进行初始化,那子类在调用父类的方法、字段时就会报错。所以Java中规定在第一行就必须将父类进行初始化。
  • 说到supper,也许你会觉得supper和this相似,其实不然,因为supper不是一个引用,不能像this进行如下操作:
Object obj = this; //this是可以当作成一个引用的
  • 而supper不能当作一个引用使用,它只是一个指引编译器调用父类方法的特殊关键字;

重写/覆盖方法

Java的重写(override)的思想是来源于,假若由子类继承自父类的方法不能满足当前的需求,我们就需要对改继承的方法进行重写来满足子类的需求。