学习笔记(02):Java面试Offer直通车-从抽象类和接口角度展示面向对象方面能力

立即学习:https://edu.csdn.net/course/play/27126/355507?utm_source=blogtoedu

有抽象方法的必须是抽象类,反之不然

但抽象类可以没有抽象方法

抽象方法不能定义方法体

子类继承抽象方法是,必须实现抽象方法

abstract class Animal{

     abstract void run()

}

 

class Cat extends Animal {

     void run() {
           System.out.println("cat");

     }

}

java 不能同时继承多个类, 所有的java类都是object子类

如果不重写 将默认使用object类里的hashcode, equals等方法

假设允许多重继承,会导致方法逻辑混乱,代码不好维护(C++允许多重继承)

接口是对功能的封装,所谓技多不压身,允许一个类拥有多种技能,允许实现多个接口

接口的方法没有方法体

一个类可以实现多个接口

实现接口的类需要实现接口方法

 

何时该用接口, 抽象类?

概念上的从属关系,可以用抽象类、继承 比如动物类和猫类

功能上的封装,用接口,比如提供连接数据库功能的接口

语法是为设计服务,根据需求合理的选用抽象类和接口

 

希望空调车的第一要素是“车”,在此基础上提供“空调服务”,所以继承汽车实现空调车方案,把共性代码封装在汽车类里,同时可以继承汽车类实现taxi等的类

更关心实现空调功能的方式,把空调的共性代码以接口的形式归纳,这样能用实现空调接口的方式,在船和飞机上,安装上空调的功能

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值