Java 中什么时候用接口,什么时候用抽象类

一.java接口

1.接口的定义为的关键字为interface

2.接口中只能有方法和变量,变量为public static final类型,方法只能被可以为public(默认)和protected修饰,方法不能有具体的实现

3.一个类可以实现多个接口

4.一个类实现接口,必须要实现接口的所有的方法

二.抽象类

1.抽象类必须用 abstract修饰

2.如果一个类有abstract方法,这个类一定是抽象类

3.抽象类不一定有抽象方法

4.抽象类可以有自己的变量

5.如果一个类如果继承一个抽象类,如果没有实现所有的抽象方法,那它也要为抽象类

三、两者怎么选择呢?

1.抽象类是对事物的抽象,它包含属性和行为(方法)的抽象,而接口是对行为的一种抽象。我们在选择时候可以根据这点来确定。如飞机和鸟,它没有共同属性,但是他们有共同的行为——飞,这个时候我们可以用接口。而民用飞机、战斗机等他们都是飞机一种,这个时候我们可以将飞机座位一个抽象类。

2.从设计层面来说,抽象类有很多子类,它是一种模板式方法。接口是一种行为规范,它是一种辐射式设计。什么是模板式方法呢?举个例子:PPT b,c,d都使用了A模板,现在A模板中增添了一个公共的功能,我们不需要对b,c,d就行改变。什么是辐射式设计?举个例子:上帝创造了动物,给每个动物都创建了吃、走等方法,各个动物具体的实现都不同,有一天上帝觉得动物们动的太慢了,于是又增加了一个跑的方法,那么每个动物都要有一个新的具体实现跑的方式。
————————————————

原文链接:https://blog.csdn.net/qq_33253647/article/details/78052767

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值