1、继承
继承的主要作用在于,在已有基础上继续进行功能的扩充。
- 好处:提高代码复用,提高可维护性
- 弊端:耦合性增强了
java
支持单继承不支持多继承,支持多层继承,只继承非私,不继承构造方法,不要为部分功能继承。- 在进行继承的时候,子类会继承父类的所有结构(包括私有属性、构造方法、普通方法)
显示继承:所有非私有操作属于显示继承(可以直接调用)。
隐式继承:所有私有操作属于隐式继承(不可以直接调用,需要通过其它形式调用(get或者set))。
语法:class 子类 extends 父类{}
2、this与super
this可调用类或父类,父子都有调用子类,super调用父类
3、继承的限制
- 子类对象在进行实例化前首先调用父类构造方法,再调用子类构造方法实例化子类对象。
- 子类的所有构造方法都会默认访问父类中的空参方法
- 实际在子类构造方法中,相当于隐含了一个语句super(),调用父类的无参构造。同时如果父类里没有提供无参构造,那么这个时候就必须使用super(参数)明确指明要调用的父类构造方法,或只用this
- 父类中无无参构造,子类中的构造都要指明使用super(,)调用有参构造或者加this(,) 在这两个里面只能写一个
- 就近,子类有的父类就不用
4、子类重写父类同名方法
- 静态覆盖静态,不算重写
- overload重载:参数列表来重载
- override 重写:方法名重写
5、final
- 修类 不能继承
- 修饰变量,常量,不能被修改,
- 修饰方法不能被重写
- 修饰变量只能显示初始化,对象构造完毕前即可
6、多态
多态就是指程序中定义的引用变量所指向的具体类型和通过该引用变量发出的方法调用在编程时并不确定,而是在程序运行期间才确定,即一个引用变量倒底会指向哪个类的实例对象,该引用变量发出的方法调用到底是哪个类中实现的方法,必须在由程序运行期间才能决定。因为在程序运行时才确定具体的类,这样,不用修改源程序代码,就可以让引用变量绑定到各种不同的类实现上,从而导致该引用调用的具体方法随之改变,即不修改程序代码就可以改变程序运行时所绑定的具体代码,让程序可以选择多个运行状态,这就是多态性。
事物存在多种形态,前提:
- 1)有继承关系
- 2)有方法重写
- 3)有父类引用指向子类对象
多态中的成员变量访问:编译看左,执行看左
成员方法:编译看左,执行看右
静态方法:编译看左,执行看左
自动提升,小到大,大到小要强制转换
多态弊端:不能用子类的属性和特有行为
好处:提高扩展性,当做参数时用扩展性强
7、instanseof关键字
判断前边的引用是否是后面的数据类型,返回类型为布尔类型
Fu f1=new Zi();
Fu f2=new Son();
if(f1 instanceof Zi){
System.out.println("f1是Zi的类型");
}