java 多继承

本文探讨了Java中类与接口的继承特性。Java类不允许多继承,但可以实现多个接口。接口则允许多继承,一个接口可以继承多个接口。在方法冲突时,类的方法优先于接口。此外,接口的多层继承也会继承所有父接口的默认方法。

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

面向对象的三大特性:封装、继承、多态。

多继承总结:
java 中类不允许多继承,即子类只能继承(extends)单个父类,但是可以实现(implements)多个接口
接口允许多继承,即一个接口可以继承多个接口;
原则:
a.类优先于接口。 如果一个子类继承的父类和实现的接口有相同的方法实现。 那么子类继承父类的方法
b.子类型中的方法优先于父类型中的方法。

类继承
子类只能继承(extends)单个父类,所以不存在多继承情况。

接口继承
实例:
1.接口继承多个父接口

注意:
若多个父接口的方法签名相同,但参数不同,则继承了两个方法,即多个父接口的默认方法不同, 隐式继承多个父接口默认方法,但是返回值不同,方法是相同的

接口1

/**
 * @Description:被继承接口
 * @author:Dxh 
 * @date:2018年1月4日 
 */
public interface AnamalService {

    void say();

}

接口2

/**
 * @Description:被继承接口
 * @author:Dxh 
 * @date:2018年1月4日 
 */
public interface PersonService {

    void say();

    void spell();
}

接口3,继承接口1和2

/**
 * @Description:去继承接口
 * @author:Dxh 
 * @date:2018年1月4日 
 */
public interface GradeService extends PersonService,AnamalService{

}

接口3的实现类

/**
 * @Description:GradeService接口的实现类
 * @author:Dxh 
 * @date:2018年1月4日 
 */
public class GradeServiceImpl implements GradeService{

    @Override
    public void say() {
        System.out.println("接口多继承,方法say()");

    }

    @Override
    public void spell() {
        System.out.println("接口多继承,方法spell()");        
    }   
}

客户端

/**
 * @Description:
 * @author:Dxh 
 * @date:2018年1月4日 
 */
public class Client {

    public static void main(String[] args) {
        GradeService serviceImpl = new GradeServiceImpl();//此处采用多态的方式
        serviceImpl.say();
        serviceImpl.spell();

    }
}

输出:
接口多继承,方法say()
接口多继承,方法spell()

2.接口多层继承
接口3会继承接口2的默认方法,包括直接定义的默认方法, 覆盖的默认方法,以及隐式继承于接口1的默认方法。

接口1:

/**
 * @Description:被继承接口
 * @author:Dxh 
 * @date:2018年1月4日 
 */
public interface AnamalService {

    void say();

}

接口2继承接口1:

/**
 * @Description:被继承接口
 * @author:Dxh 
 * @date:2018年1月4日 
 */
public interface PersonService extends AnamalService{

    String say(String msg);

    void spell();
}

接口3继承接口2:

/**
 * @Description:去继承接口
 * @author:Dxh 
 * @date:2018年1月4日 
 */
public interface GradeService extends PersonService{

}

GradeService 的实现类:
/**
* @Description:GradeService接口的实现类
* @author:Dxh
* @date:2018年1月4日
*/
public class GradeServiceImpl implements GradeService{

@Override
public void say() {
    System.out.println("接口多继承,方法say()");
}

@Override
public void spell() {
    System.out.println("接口多继承,方法spell()");

}

@Override
public String say(String msg) {
    System.out.println("接口多继承,方法say()+name");
    return "name";
}

}
客户端:

/**
 * @Description:
 * @author:Dxh 
 * @date:2018年1月4日 
 */
public class Client {

    public static void main(String[] args) {
        GradeService serviceImpl = new GradeServiceImpl();
        serviceImpl.say();
        serviceImpl.spell();
        serviceImpl.say("name");

    }
 }

输出:
接口多继承,方法say()
接口多继承,方法spell()
接口多继承,方法say()+name

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值