Java接口默认实现、接口和抽象类区别

Java8引入接口默认实现,允许接口中定义具体方法,增强了接口的功能。接口与抽象类的主要区别在于,接口主要用于定义行为,而抽象类可定义行为并提供具体实现。在扩展性方面,接口支持多实现,抽象类支持单继承。设计模式中的缺省适配模式结合了接口和抽象类的优点,提供了一种灵活的实现方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Java8接口可添加默认实现

java8新增了接口默认实现功能,每个接口可以有默认实现,实现类可以根据其需要进行定制化得实现
抽象方法前面添加default关键字即可,代表该方法有默认实现。

public interface UserService {
   String say();

   default void Hello(){
       System.out.println("this is interface Hello()");
   };	
}
@Service
public class UserServiceImpls implements UserService {
	//必须实现
    @Override
    public String say() {
        return "null";
    }
	//可选实现
    @Override
    public void Hello() {
        System.out.println("this is implements Hello()");
    }
}

接口和抽象类的区别

在看视频学习源码时候突然对接口和抽象类比较模糊抓紧巩固起来
自java8后有了一个区别,就是上边的默认实现。

序号接口抽象类
1定义抽象行为,由类去实现具体行为。如人都要吃饭,但是不同种族的人吃法不同即可直接定义具体行为,也可以定义抽象行为。具体行为如人都要上WC这是统一行为。
2只能定义抽象方法,java8后可提供默认实现可以定义抽象方法,也可以定义普通方法
3通过实现类implements来实现具体的方法。扩展性强,因为一个类可以实现多个接口,对于功能的扩展十分方便。抽象的方法通过子类extends来实现该方法。扩展性不强,因为一个类只能继承自一个父类。(hava one father)
4实现类型较多可多实现子类类型单一,因为单继承
5直接定义即可抽象方法必须用abstract修饰。为继承而存在,其子类必须实现其abstract方法描述的抽象方法

补充:个人理解:抽象类用于构建一个具备某些相同行为以及不同行为的对象,其中不同的行为用抽象方法表示出来,待子类进行定制化的实现即可。

设计模式:缺省适配模式

声明类型的工作仍然由Java接口承担,但是同时给出一个Java 抽象类,且实现了这个接口,而其他同属于这个抽象类型的具体类可以选择实现这个Java接口,也可以选择继承这个抽象类,也就是说在层次结构中,Java 接口在最上面,然后紧跟着抽象类,这下两个的最大优点都能发挥到极至了。这个模式就是“缺省适配模式”。在Java语言API中用了这种模式,而且全都遵循一定的命名规范:Abstract +接口名。(A extends AbstractB implements interfaceC,那么A即可以选择实现(@Override)接口interfaceC中的方法,也可以选择不实现;A即可以选择实现(@Override)抽象类AbstractB中的方法,也可以选择不实现)

该处描述转载至:https://blog.youkuaiyun.com/xw13106209/article/details/6923556

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值