抽象类和接口的区别

在语言层面上,抽象类和接口的区别是

抽象类使用extend去继承,而接口是使用implement去实现
一个类只能继承与一个抽象类,但是却可以实现多个接口

在使用层面上呢

举个栗子

public abstract class animal{
	public void eat(){};
    public void sleep(); 
}

public class dog extend animal{
}

public class bird extend animal{
}

动物都会吃饭睡觉,那么我们可以定义一个动物的抽象类,将所有动物都具有的能力加入这个抽象类中。
从中我们可以看到,抽象类是对一类事物的通用能力的抽象,将他们所具备的相同能力抽象出来,当我有一个具备吃饭睡觉能力的东西时,我可以让他继承我这个anima抽象类,来告诉大家在我看来他是个动物。
可以说抽象类,是对具有相同行为的事务的分类。

但是bird除了吃饭睡觉之外,他还会飞。这是他所具备的特殊的能力。

public interface fly{
	void fly();
}
public class bird extend animal, implement fly{
	@Override
    public void fly() {
    }
}

鸟即是动物,又会飞,那么我们可以让他实现飞翔接口,告诉大家,我是动物,且我会飞,为什么这个fly不直接写在bird里,而要以接口的形式实现呢。
用接口的话,别人可以在看到类的申明文件的情况下就知道他具备哪些能力。

总结

总的来讲,感觉抽象类,是对具有同一类能力的事物的能力的汇总,一定程度上复用代码,且对事物分类
接口的话,是对某个能力或者行为的定义。强调有没有这个能力。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值