java语言实战开发——继承和多态

继承

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修饰的变量引用不可更改,引用的内容可以更改。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容