A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

第四章继承
4.1 继承的概述
答:通过extends关键字让类与类之间产生继承关系。
4.2 继承的利弊
(1)继承的好处
    ① 提高了代码的复用性
    ② 提高了代码的维护性
    ③ 让类与类之间产生了关系,是多态的前提
(2)继承的弊端
类的耦合性增强了。
4.3 继承的特点及注意事项
只支持单继承,不支持多继承(一个儿子只能一个爹)。但支持多层继承
②子类只能继承父类所有非私有的成员(成员方法和成员变量);
③子类不能继承父类的构造方法,但是可以通过super关键字去访问父类构造。
4.4 this关键字和super关键字
(1)①this:代表当前对象的引用,谁来调用我,我就代表谁.
     ②super:代表当前对象父类的引用
(2)使用场景和作用:

调用成员变量
调用构造方法
调用成员方法
this
本类、父类
本类
本类、父类
super
父类
父类
父类
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

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马