抽象类和接口的区别

抽象类与接口到底有啥区别呢,你选择使用的依据是什么?懵!但是面试的时候有可能会遇到。下面是自己的粗浅的理解与解释。

抽象类是啥?透过现象看本质,是对事物根源的抽象概括;那么接口呢?是对一种行为一个动作的抽象描述。

抽象类说你是什么,你就一定是什么,而接口说你你到底能做什么!

比如说吧,杨树、松树,它们本质上都是树,那么“树”就是它们的抽象类,说明它们都是树。

抽象类:Tree

public abstract class Tree {

}
实现类:

杨树Poplars

public class Poplars extends Tree{

}

松树:Pine

public class Pine extends Tree{

}

再比如说,猪可以吃东西,牛也可以吃东西,想想,“吃东西”是否可以抽象成一个类吗?看本质,猪和牛是“吃东西”吗,显然不是,它们是动物,所以 你就可以把“吃东西”定义成一个接口。

接口类:Eat

public interface Eat {
	void eatFood();
}

接口实现类:

猪:Pig

public class Pig implements Eat{

	@Override
	public void eatFood() {
		
	}

}

牛:Bull
public class Bull implements Eat{

	@Override
	public void eatFood() {
		
	}

}

再来说,松树、杨树可以是动物吗?不能,所以说,一个类有且只能继承一个抽象类;那么,猪可以走路吗?牛可以走路吗?可以的,说明一个类可以实现多个接口。


暂且总结如下:

(1)一个类只能继承一个抽象类,但可以实现多个接口

(2)抽象类可以声明一个方法的存在而不去实现它,而接口的方法全部是抽象的

(3)抽象类可以实现部分方法,而接口不可以实现

(4)接口的成员变量都是static的,而抽象类没必要

(5)当你关注事物的本质的时候就用抽象类,当你关注一个事物的行为的时候就用接口


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值