一、继承关系中构造方法的特点
1、在继承关系中,一定是先加载父类对象,然后加载子类对象
2、在子类构造方法中,第一行会默认隐含一个super();
3、可以在子类中通过super(参数);来去访问父类的有参构造方法
二、super关键字
1、在子类成员方法中,可以通过super调用父类的成员变量
2、在子类成员方法中,可以通过super调用父类的成员方法
3、在子类构造方法,可以通过super访问父类的构造方法
三、this关键字
1、可以区分局部变量和成员变量重名
2、可以在本类中通过this调用本类其他成员方法
3、可以在本类中构造方法通过this(参数)调用本来其他构造方法
四、抽象类
1、格式:public abstract class 类名 {
public abstract 返回值类型 方法名(参数);
}
2、注意事项:
抽象类不能直接创建对象
抽象类中不一定有抽象方法。但是有抽象方法的类一定是抽象类
子类继承抽象类,必须重写所有的抽象方法。或者将子类也定义成抽象类
五、多态
1.什么是多态?
事物的多种表现形态。例如:张三是一个学生,张三是一个人类。
2.多态的前提条件?
A:要有继承关系或实现关系
B:要有方法的重写
C:父类引用指向子类对象
3.多态中的成员访问特点
成员变量:编译看左边、运行看左边
成员方法:编译看左边、运行看右边
静态方法:编译看左边、运行看左边
4.多态的好处和弊端
好处:一般将父类型或父接口用于作为方法的参数进行传递。当我们调用该方法时,可以传递任意的子类对象
弊端:无法访问子类特有的成员
5.向上转型
父类引用指向子类对象就是一个向上转型
6.向下转型
子类名称 对象名 = (子类名称)父类引用;
7.instanceof关键字
判断一个引用是否是指定的对象类型
六、接口
1.什么是接口?
接口提供了一套公共的规则!说白了就是一套规范。
2.如何定义接口?
public interface 接口名{ }
3.接口中的成员
A:成员变量:没有。有的是常量。 public static final 数据类型 常量名 = 数据值;
B:构造方法:没有。(接口不能创建对象)
C:成员方法:
a:JDK7版本及之前:抽象方法
b:JDK8版本:默认方法、静态方法
c:JDK9版本:私有方法
4.类与类、类和接口、接口和接口的关系
类与类:extends继承关系。只能单继承,不能多继承。但是可以多层继承
类和接口:implements实现关系。可以单实现,可以多实现。还可以在继承一个类的同时,实现多个接口
接口和接口:extends继承关系。可以单继承,也可以多继承
5.抽象类和接口的区别
关系区别:
类与类:extends继承关系。只能单继承,不能多继承。但是可以多层继承
类和接口:implements实现关系。可以单实现,可以多实现。还可以在继承一个类的同时,实现多个接口
接口和接口:extends继承关系。可以单继承,也可以多继承
成员区别:
抽象类:
成员变量:可以有变量、也可以有常量
构造方法:有
成员方法:可以普通方法,也可以有抽象方法
接口:
成员变量:只能有常量
构造方法:没有
成员方法:a:JDK7版本及之前:抽象方法
b:JDK8版本:默认方法、静态方法
c:JDK9版本:私有方法
设计理念区别:
抽象类:完成的是共性功能的抽取
接口:完成的是特性功能的抽取
要么做第一个,要么做最好的一个
--Object.Q