Java项目实战开发Day06 2020-03-22

内容

1.继承
2.多态

一.继承

详细请看:https://www.jianshu.com/p/b274b4024399

1.注意事项

子类不能继承父类的构造方法

(1)super表示调用父类的属性或者方法,super()表示调用父类的构造方法。与之类似的是this,this是表示访问当前类或者对象的属性或方法,而super是访问父类的。
(2)当父类写其他带参数构造器时手动显式写了一个无参数构造器的时候,子类的构造器里面才会默认调用父类的无参构造。当父类中只有显式的有参构造器时,子类的构造函数必须显式写出并且调用父类的相应构造方法
总之就是子类的构造方法中肯定会在第一行调用父类的构造方法。只是是否是显式调用的问题(是系统默认调用还是自己显式调用的问题)。这个也是涉及继承树的理解。

子类不能继承父类用private修饰的属性或者方法。可以继承用protected修饰的属性或方法

当然别忘了,不能继承父类的构造方法

③当然也别忘了子类可以进行 重写/覆盖,这里就不再多说。

只需再强调一点:静态方法不存在覆盖

④注意重载和重写是不一样的:

重写:两同一大二小方法名和参数必须相同,此为两同
子类的修饰符范围要比父类更大或者相同,此为一大
子类的返回值必须比父类的要小或者相同,这个大小是父类和子类,就比如返回值是父类,那么子类重写的方法返回值就必须是父类或者子类或者void。子类抛出的异常必须比父类抛出的异常要小,此为二小
(可以这样理解:儿子走的比父亲更远(修饰符范围更广),但是在父亲的保护下,儿子遇到的挫折比较少(抛出异常),而且得到的东西也少了(返回值))

Java里面只能直接继承于1个类,也就是单继承。但是可以间接继承多个类
继承的优点和缺点

继承优点:使代码复用性更强。
缺点:使代码之间耦合性变大,使代码之间关联程度增强,移植性降低。并且安全性也降低了。(因为父类的东西被子类的改了,这一改就可能出问题了。比如安全性的问题)

⑥所以建议

(1)尽量让属性的修饰符为private,这样子类就无法继承相关量,耦合性就降低了。
(2)尽量让父类方法的修饰符为private或者final,但是也不是让所有的都是private或者final
(3)尽量不要在父类的构造方法里面调用可能被子类重写的方法

二.多态

详细请看:https://www.jianshu.com/p/b274b4024399

1.简介

父类型引用指向子类型对象这种机制导致程序存在编译阶段绑定和运行阶段绑定两种不同的形态/状态。这种机制可以称为一种多态语法机制

2.何时用?

当编译和运行时的对象是有继承关系时,而且想减少代码量,使代码看起来更简洁。(比如一个方法要接收多种对象)而且只能是子类转为父类,而不是子类转为子类或者子类转为父类,这样就可以使用多态机制。

3.instanceof

在使用的时候,如果需要使用子类独有的属性或对象,则必须将父类强转为相应的子类。但是在强转之前,必须进行一个判断,即instanceof(谷歌翻译为:实例)

if(父类对象 instanceof 子类){强转,然后调用子类独有属性或方法}

总之就是:instanceof是判断某个对象是不是某个类的对象

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值