继承认识:
-
继承是多态的前提,如果没有继承,就没有多态。
-
继承主要解决的问题是:共性抽取。即父类有的子类都有,但子类又有自己的特性。 父类也叫基类。
父类定义格式:和定义一个普通类一样
子类格式:extends
父子成员变量名重复时,访问规则:
父子继承关系中,如果成员变量名重复,则创建子类对象时,访问方式有两种:
- 直接通过子类对象访问:
等号左边是谁,就优先用谁,没有则向上找。
- 间接通过成员方法访问:
改方法属于谁,就优先用谁,没有则向上找。
局部变量:直接写成员变量名
本类成员变量:this.成员名
父类成员变量:super.成员名
父子成员方法重名时的访问规则:
创建的对象是谁,就优先用谁,没有向上找。
[注意]:无论是成员方法。还是成员变量,如果没有都是想上找。
覆盖与重写:
覆盖(overeride):即重写。方法的名称一样,参数列表也一样。
重载(overload):方法的名称一样,参数列表不一样。
-
两者特点:创建的是子类对象,则优先用子类方法。
-
覆盖重写注意事项:
1.必须保证父子类之间方法的名称相同,参数列表也相同。__@override(@:叫注解,安全检验的作用):写在方法前面,用来检测是不是有效的覆盖重写。
2.子类的返回值范围小于父类范围。
3.子类方法的权限必须大于等于父类方法权限修饰符。
扩展提示:public>protected>(default)>private
备注:(default)不是关键字default,而是什么都不写,留空。
父子类构造方法的访问特点:
1.子类构造方法当中有一个默认的 “super()"调用,所以一定是先调用父类,再调用子类。
2.子类构造可以通过super关键字来调用父类重载构造。
3.super的父类调用,必须是子类方法的第一个语句。不能一个子类调用多个super。
super关键字的三种用法:
1.在子类的成员方法中,访问父类变量。
2.在子类的成员方法中,访问父类的成员方法。
3.在子类的构造方法中,访问父类的构造方法。
super关键字用来访问父类内容,而this关键字用来访问本类内容。
this关键字三种用法:
1.在本类的成员方法中,访问本类的成员变量。
2.在本类的成员方法中,访问另一个成员方法。
3.在本类的构造方法中,访问本类的另一个构造方法。
A.this()调用也必须是构造方法的第一个语句,唯一一个。
B.super和this两种构造调用,不能同时使用,因为他们都要在第一句使用。
java继承三个特点:
1.java语言是单继承的,一个类的直接父类只能有唯一一个。
2.java语言可以多级继承,如我有一个父亲,我父亲还有一个父亲。
3.一个父亲可以有很多个子类。
抽象的概念:
如何父类当中的方法不确定如何进行{}方法实现,那么这就是应该是一个抽象方法。
2.1.抽象方法:
加上abstract关键字,去掉大括号,直接分号结束;
比如:
public class Animal{
public abstract void eat();
}
(错误!!!!!)
2.抽象类:
抽象方法所在的类,必须是抽象类才行,在class之前加上abstract即可。
比如:
public abstract class Animal{
public abstract void eat();
}
(正确!!!!!)