继承
java里面只能直接继承于一个类 只能继承一个
可以继承父类的属性和方法 但是不能继承父类的构造方法
如果想要调用 就需要自己写一个带有参数的构造方法如:在父类中:
在子类中需要调用的构造方法:
其中子类构造方法中的super表示调用父类的属性和方法
super()表示调用父类的构造方法
this不同的是表示访问当前的类或者对象的属性或者方法
构造方法的执行顺序:
父类A -> 子类B ->子类C
子类不能继承父类private修饰的属性或者方法
子类继承父类的方法(public protected修饰的方法)
如果子类需要在父类的基础之上重新实现父类的方法,子类必须重写这个方法,这个过程成为重写或者覆盖
如果子类重写了父类的方法,那么不会调用父类的方法了。如果没有重写,先从当前类里面查找这个方法,如果没有从父类去查找,如果父类中都没有这个方法那么系统就会报错
重载
是指同一个类里面 方法名相同 参数不同
重写
是指方法和参数相同
一大:
子类的修饰符要比父类的大或者相同
两小
子类的返回值必须比父类的要小或者相同
子类抛出的异常必须要比父类抛出的异常要小
继承的优点和缺点
优点
复用性更强
缺点
耦合性大 安全性降低了
如何避免安全性降低
1.尽量让父类属性的修饰符为private
2.尽量让父类方法的修饰符为private或者final
3.尽量不要在父类的构造方法里面调用可能被子类重写的方法
多态
编译和运行时是两个东西 不同对象
编译和运行时的对象是有继承关系的,如:BMW,Audi -> Car
特点:
只能子类对象传给父类对象 不能把父类对象传给子类对象
在使用的时候,如果需要使用子类的方法或者属性,必须强制转化为对应的子类对象
instanceof
用来判断某个对象是不是某个类的对象
if(car instanceof Audi){
}
final
final可以修饰类,方法和变量,被final修饰的类不可继承,被final修饰的方法不可重写,被final修饰的变量引用不可更改,引用的内容可以更改。