接口与抽象类


这个很多人都可以说出狠多区别,这里我们先回顾一下

接口

interface关键字修饰,实现使用implements,可以实现多个;方法都是公开抽象的;不能创建对象;实现一个接口的类要么全部实现抽象方法,要么是一个抽象类;

抽象类

abstract关键字修饰,继承使用extends,只能继承一个;方法可以是抽象的或者不是抽象的;不能创建对象;

接口与抽象类

接口是方法的集合,使用接口可以定义规则(方法),对外提供统一明确的服务;抽象类为了代码复用,相同的代码抽象成抽象类,子类可以重写成单独的方法,也可以使用父类的方法;举个例子,工人都有吃饭,工作两个方法,工人接口可以定义

void eat();
Object work();

然后所有工人的吃饭都一样,就可以定义抽象类工人

void eat(){ 
	System.out.println("吃肉")
 }
public abstract Object work();

不同的工人继承抽象工人类,只需要实现work方法,都统一有了eat方法

public Object work(){
	return new Object();
}

接口的一个使用案例

业务场景:根据用户vip等级,提供不同的服务;比如爱奇艺会员
先上原始代码:

public class Test{
	public String service(User user	){
		if(user instanceOf Vip1){
			//vip1的服务
		}else if(user instanceOf Vip2){
			//vip2的服务
		}
	}
}

这样可以吗?功能实现了,只是当vip3出现时,调整很多,判断很多,很复杂;接下来借用接口梳理过程,

public interface Vip{
	void doSomething();
}
public class Vip1 implements Vip{
	void doSomething(){
		//vip1的服务
	}
}
public class Vip2 implements Vip{
	void doSomething(){
		//vip2的服务
	}
}

public class Test{
	private Map<User.TYPE,Vip> map;
	public String service(User user	){
		map.get(user.TYPE).doSomething();
	}
}

当出现Vip3时,只要添加一个Vip3去实现Vip接口,就好了。。。

接口与抽象类就到这里,期望你的点赞。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

赵宁333

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值