参考价值:已完结、但不一定正确、仅供参考、但不能作为标准答案、等待重置

什么是继承性?

就是字面上的意思,一个类继承了另一个类的属性和方法就叫继承。继承的是子类被继承的是父类。

继承有什么好处?

  1. 减少了代码的冗余,增强了代码的复用性。
  2. 便于扩展代码的功能
  3. 增强类之间的联系,为多态性创造了基石。

子类继承父类是直接将父类代码copy到子类里吗?

不是。

子类依旧不能直接调用父类里私有的属性或方法。至于为什么可以跳转到最下面看继承的原理。

怎么实现继承?

1
2
3
4
5
6
7
8
9
10
class Father{
//属性:
//构造器:
//方法:
}
class Son extends Father{
//属性:
//构造器:
//方法:
}

方法的重写有什么意义?

有时候父类的方法不能满足子类的需求,我们通常会重写这个方法以达到子类的需求。

方法重写的原则是什么?

  1. 子类重写的方法必须与父类被重写的方法具有相同的方法名称和参数列表
  2. 子类重写的方法不能比父类被重写的方法权限低
  3. 子类重写的方法返回值类型不能大于父类被重写的方法
    • 父类的是void,子类的也必须是void
    • 父类的是引用数据类型,子类的也必须是引用数据类型
    • 父类的是基本数据类型,子类的也必须是基本数据类型
  4. 子类重写的方法抛出的异常不能大于父类被重写的方法抛出的异常

子类怎么调用父类的属性、构造器和方法?

类调用属性构造器和方法是通过this关键字来调用,而子类调用父类的属性、方法和构造器是通过super关键字,用法和this差不多。

Java面向对象之关键字 this

继承的原理是什么?

通过extends关键字使子类在调用构造器的同时,以对象的地址为对象直接调用父类中的无参构造器(不是用了隐藏的super关键字)

因此,当父类当中构造器被重载,并且没有重载无参构造器时,需要用super关键字在子类构造器中调用父类构造器,否则就无法继承。

这也是为什么子类无法直接调用父类中私有的属性或者方法。

根父类Object类:

如果一个类没有显示继承某个父类,那么它会默认继承根父类Object类

因此,除了Object类所有的类都是有父类的。

Object类存在的意义:

Object类里写了大量的通用的方法,这些方法都会被其子类继承,这导致Java中所有的类都具有丰富的功能。