“抽象类” 和 “接口” 的区别!!!

抽象类:

在父类中没有具体实际工作的方法,我们可以将他设置为抽象方法,包含了抽象方法的类我们称为抽象类(abstract class)。
比如,有一个类中是这样写的:

class A{
	public void a() {
	// 啥都不用干
	}
} 

很明显可以看出,这个类A是什么都没有实现的,我们就可以把这个类定义为抽象类,直接用abstract修饰就好。

接口:

接口在java中是一个抽象类型,是抽象方法的集合。接口是抽象类的更进一步(换句话说,比抽象类还抽象),抽象类中还可以包含非抽象方法或者字段,而接口中的方法是抽象的,字段是静态常量。直接使用interface定义就好。

两者都不可以被实例化。

两者区别:

1、怎么定义:
(1)抽象类使用abstract 修饰,子类用extends来继承。
(2)接口使用interface修饰,具体实现类用implements。

2、类中方法的实现:
(1)抽象类中可以有抽象方法也可以又非抽象方法。非抽象方法和普通方法没有什么区别,只是有了抽象方法,就必须是抽象类。
(2)接口中必须是抽象方法。但是抽象方法都是不需要实现的方法,所以接口中的方法不需要实现。

3、访问的修饰符
(1)抽象类中可以有public、protected、default。抽象类的目的就是为了用于继承的,所以肯定不可以用private修饰。
(2)接口中public和default修饰符。 接口中的成员变量默认是public static final,成员方法是public abstact。一般情况可以不写。在jdk1.8中,可以实在具体方法,但这个方法必须呗default修饰。
4、继承:
(1)抽象类可以继承一个类,子类只可以继承一个抽象类。
(2)接口只可以继承接口,子类可以实在多个接口。

5、构造函数:
(1)抽象类中有构造函数。虽然有构造函数,但是还是不能被实例化。
(2)接口中没有构造函数。

6、新增方法:
(1)在抽象类中添加其他的普通方法,子类不需要去实现的。抽象方法就需要喽。
(2)接口中添加方法,子类中就需要去实现。

7、自己的理解:
(1)抽象类其实表示的就是这个动物是什么?这个动物可以是小猪、小鸡、小鸭…
(2)接口其实表示的是这个动物能干什么?飞、吃、睡、跑…

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值