科技宅檀 2017-02-09 11:47
继承(重点)
(1)把很多类的相同特征和行为进行抽取,用一个类来描述。让多个类和这个类产生一个关系。
这样的话,多个类就可以省略很多代码。这个关系就是继承。java中用extends关键字表示。
(2)继承的体系结构
A:多个具体的对象,不断的向上抽取共享的内容,最终形成了一个体系。这个体系叫做继承体系。
B:继承体系的学习和使用原则
**学习顶层的内容。因为他是整个体系的共性内容。
**创建子类使用。也就是使用底层的具体对象。
(3)继承的特点:
A:java中只能单继承,没有多继承。
B:java可以有多重(层)继承。
(4)继承的好处:
继承的出现提高了代码的复用性。
继承的出现让类与类之间产生了关系,提供了多态的前提。
(5)继承的注意事项:
1.父类的私有成员不能被继承。
2.父类的构造函数不能被继承。
3.创建子类对象时会先调用父类的构造函数。
4.调用父类的构造方法是可以初始化从父类继承下去的属性的。
(6)子父类中的成员关系
A:成员变量
在子类方法中使用一个变量时:
首先,在方法的局部变量中找这个变量,有则使用。
否则,在本类中找成员变量,有则使用。
否则,在父类中找成员变量,有则使用。
否则,报错。
B:成员方法
用子类对象使用一个方法时。
首先,在子类中找这个方法,有则使用。
否则,在父类中找这个方法,有则使用。
否则,报错。
构造方法
**子类的实例化过程
***子类创建对象时,会先去创建父类的对象。
默认是去调用父类的无参构造方法。
***子类构造方法中,第一行默认是super()
***为什么子类中第一行会默认有super()
因为他继承父类的成员使用,使用前这些成员必须初始化,
而他们是父类的成员,所以,必须通过父类进行初始化。
所以,会先创建一个父类的对象。
**当父类没有无参构造方法时
必须使用this或者super调用其他的构造方法。
(7)this、super
区别
this:代表本类对象的引用,不存在继承关系也能使用,用来调用本类的构造函数。
super:代表父类的存储空间,必须要有继承关系才能使用,用来调用父类的构造函数。
super作用
A:子父类存在同名的成员时,可以通过super关键字指定访问父类的成员。
B:可以通过super关键字调用父类的构造方法(带参的)。
super关键字调用父类构造方法要注意的事项
A:如果在子类的构造方法上没有指定调用父类的构造方法,那么java编译器会在子类的构造方法上加上super()
B:super关键字调用父类的构造函数时,该语句必须是子类构造函数的第一句。
C:super与this关键字不能同时出现在同一个构造函数中调用其他的构造函数,因为两个语句都必须在第一句。
(8)重写
子父类出现了同名的函数,这个就称作方法的重写,方法重写的前提是必须要存在继承关系。
注意:
A:方法名与形参列表必须一致。
B:子类方法的访问权限要大于等于父类方法的访问权限。
C:静态只能重写静态。但是这种情况一般不会出现。
D:子类的返回值类型必须小于或者等于父类的返回值类型。
E:子类抛出的异常类型要小于或者等于父类抛出的异常类型。
重写和重载的区别?
重载:在同一类中。方法名相同,参数列表不同。重载可以改变返回类型。
重写:在不同类中(子父类中)。
方法声明相同(返回类型,方法名,参数列表均相同)。