继承、多态以及抽象方法的诞生要点记录

继承:

能继承父类的非私有,非构造的方法,不能重写父类用final和static修饰的方法。

多态:

谁的引用使用谁的属性;父类引用能够使用父类未被子类重写的方法;父类没有无参构造方法子类要写构造方法将参数传到父类有参构造方法,子类就不用在方法体内使用属性赋值,直接使用父类属性;其他类不能调用非本类私有属性。使用子类特有的方法要向下转型,向下转型有风险,使用Instance判断引用是否指向需要转型的对象的类。

抽象方法的演变过程:

为了减少代码量,同时为了实现在父类中的某个方法有多种表示形态,因此在继承的前提下使用多态(继承是为了多态,多态的前提时继承),为了实现多态,子类往往会重写父类的方法,使用向上转型(使用父类的属性减少代码量)调用方法。因此说此时父类还不知子类要实现什么功能,方法体就留空,但是,方法体也占内存,因此就将方法体去掉。可是又出现问题了,两个同访问修饰符,同名同参数列表的方法同无方法具体实现的方法怎么区分呢,这就引出了抽象方法-将方法体去掉,加上abstract。
有抽象方法必是抽象类,同是也可以有非抽象方法,这并不冲突。
抽象方法是因为父类不知子类要实现什么功能,功能有子类决定,因此子类必须全部实现父类的抽象方法,解铃还须系铃人。

抽象类不能实例化原因:

至于抽象类有构造方法,不能够实例化的原因。答案:实例化是为了能够调用方法,抽象类都不确定方法的具体实现,因此说不能调用方法,也就不能够,准确地说了不必要实例化了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Fire king

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值