第四章继承 4.1 继承的概述 答:通过extends关键字让类与类之间产生继承关系。 4.2 继承的利弊 (1)继承的好处 ① 提高了代码的复用性 ② 提高了代码的维护性 ③ 让类与类之间产生了关系,是多态的前提 (2)继承的弊端 类的耦合性增强了。 4.3 继承的特点及注意事项 ①只支持单继承,不支持多继承(一个儿子只能一个爹)。但支持多层继承; ②子类只能继承父类所有非私有的成员(成员方法和成员变量); ③子类不能继承父类的构造方法,但是可以通过super关键字去访问父类构造。 4.4 this关键字和super关键字 (1)①this:代表当前对象的引用,谁来调用我,我就代表谁. ②super:代表当前对象父类的引用。 (2)使用场景和作用: 4.5 方法重写和方法重载的区别? (1)区别: ①Overload: 本类中出现的方法名一样,参数类表不同的方法.与返回值类型无关.可以改变返回值类型,只看参数列表. ②Override: 子类中出现了和父类中方法声明一模一样的方法.与返回值类型有关,返回值类型是一样的. 4.6 子类的实例化过程 1、子类中所有的构造函数默认都会访问父类中空参数的构造函数。因为每一个构造函数的第一行都有一条默认的语句super();。 2、父类可以没有空参构造,但子类的构造函数必须通过this或者super语句指定要访问的构造函数。 3、子类构造函数中如果使用this调用了本类构造函数,那么默认的super();就没有了,因为super和this都只能定义在第一行,所以只能有一个。但是可以保证的是,子类中肯定会有其他的构造函数访问父类的构造函数。 案例演示1 file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml\wps277D.tmp.png
class ExtendDemo { public static void main(String[] args) { Zi z = new Zi(); z.show(); } } class Fu { Fu() { super(); // 调用的是子类的show方法,此时其成员变量num还未进行显示初始化 show(); return; } void show() { System.out.println("fu show"); } } class Zi extends Fu { int num = 8; Zi() { super(); // 通过super初始化父类内容时,子类的成员变量并未显示初始化,等super()父类初始化完毕后,才进行子类的成员变量显示初始化 return; file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml\wps277E.tmp.png} void show() { System.out.println("zi show..." + num); } }
运行结果 zi show...0 zi show...8 |