抽象类与接口——知识层面及使用层面

(一)知识层面

1、抽象类

(1)定义:

用abstract修饰的类,表示一种抽象的类型。
为什么Java中要有这种抽象的类型呢?
举个例子,当你要写一个动物类时,所有动物的年龄等属性的定义方式是确定的,但是“吃”“叫”之类行为的实现方式是不相同的。这时可以将这些行为(方法)定性为抽象,子类继承抽象类之后,再去具体实现这些抽象方法。
说明:一个类中只要存在抽象方法,那么这个类一定是抽象类。

(2)规范:

1、抽象类中既可以有抽象方法,也可以有非抽象方法。
抽象方法:只知道要做一件事情,但是不知道具体怎么做。没有方法体。例如:

public abstract void eat();//动物吃的方法

2、继承抽象类,就要实现抽象类中所有的抽象方法。
3、抽象类不能直接创建对象,必须通过子类创建对象。

2、接口

(1)定义:

接口就是一种公共的规范标准,只要符合规范标准,大家就可以通用。有着扩展功能的作用。

(2)规范:

1、接口中没有变量,只有常量,默认被public static final修饰。方法的默认修饰符为public abstract,java1.8后default修饰的方法,可以定义方法体,例如:

default void sleep() {
}

2、实现接口就必须要实现父接口中的所有抽象方法。
3、接口不能直接new出对象,必须要通过实现类去创建。
4、接口的实现可以多态,与类的继承类似。
5、接口不能实现接口。
6、一个类中可以实现多个接口,中间用“,”隔开。
7、接口可以继承接口,而且可以继承多个接口,中间用“,”隔开。

3、抽象类与接口的区分

抽象类接口
子类继承(extends)父类实现类实现(implements)父接口
本质是类,class修饰本质是接口,Interface修饰

什么时候定义抽象类,什么时候定义接口,一定要回想定义和规范。

(二)使用层面

接口:
Java里的接口像是1个功能包或插件,Java的类实现1个接口就相当于装备上这个功能包或插件,从而具有了这个功能包和插件对应的功能。

参考作用:

  1. 通过接口可以实验不相关类的相同行为。
    例如 java规定所有可以完成自我复制功能的类都必需实现java.lang.Colneable 接口。
    而这个接口是空的,没有任何内容,只是起1个标记作用。

  2. 接口提供了不同对象进行协作的平台。(?)
    例如事件处理。

  3. 接口可以实现多继承, 一定程度上弥补了java类只能单继承的缺点。

  4. 接口是我们了解1个类的功能的重要途径
    例如1个类的定义代码很复杂,而我们可以观察它实现了哪些接口,大概估出这个类的作用。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值