java 接口之多继承,类为什么不可以多继承

本文探讨了Java中多继承的限制及接口的多继承特性。详细解释了当父类存在相同方法或属性时的问题,并介绍了接口实现类的注入机制及调用顺序。

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

  一  java 在编译的时候就会检查 类是不是多继承,如果出现多继承编译不通过。但是在java 语法中接口是可以多继承 的。

  1 java 如果出现多继承、父类中都有相同的属性和name 值 子类如果使用父类的属性和name 值 无法确定是哪一个父类的是 属性和name值。

  2 父类中如果相同的方法,并且子类并没有覆盖该方法。子类调用父类的时候 无法判断是那个父类的方法。

二  接口 是可以多继承的。接口(jdk 1.7 以下版本)里面的方法并有实现,即使接口之间具有相同的方法仍然是可以的 几个接口可以有想通的实现类和实现方法。而且接口 接口里面的成员变量都是 static   final的  有自己静态域 只能自己使用。

   接口的实现类可以有多个 。(java bean 注解注入) 一个接口(用多个实现类)被注入进来。调用方法的时候。会先依据bean 查找那个 一样的bean 。调用该实现类的方法。其次如过 实现类上都没有注解的 bean 会按照加载的先后顺序去调用的。 

例子  

public interface TestService {
    public void a();
}

实现  

@Slf4j
@Service("testService")
public class TestInterfase implements TestService {
    @Override
    public void a() {
        log.info("test test interface");
    }
}

@Slf4j
public class HealthBillCashServiceImpl implements TestService {
    @Override
    public void a() {
        log.info("test cash healthbillCash");
    }
}

测试 

@SpringApplicationConfiguration(classes = Application.class)
@WebAppConfiguration
@Slf4j
public class TestHealthPolicyService {
    private TestService                       testService;// 查找bean 的唯一性
    @Test
    public void testASD() {
        HealthPolicyDO optionDO = new HealthPolicyDO();
        testService.a();
    }
}

结果 

test test interface


如果没有 @Service("testService") 的注解

会输出 

test cash healthbillCash


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值