java为什么不能多继承问题

最近面试被问到了一个很有趣的问题,java为什么不能多继承,当时懵了,这个问题重来就没有考虑过,一直按照生物学一些类属性划分,来理解记忆;

回来后网上查找,为什么java不能多继承,其实也很简单,问题在于功能在于谁实现,使用时能否准确定位是谁做。父类方法有方法体,也就是说能实现功能,子类继承父类,没有重写方法,调用的是父类的功能;假如可以继承多个父类,那么当父类A,B中有同样的方法或参数时,子类C调用父类方法或属性时很难判断要调用谁;例如

//父类1
public class Supper01{
    String name="zhangsan";
    public String getName{
        return name;
    }
}
//父类2
public class Supper02{
    String name="lishi";
    public String getName{
        return name;
    }
}
public class son extends Supper01,Supper02{
    public void get(){
        System.out.println(name);//打印 zhangsan 还是lisi
        String st=etName();//获取 zhangsan 还是lisi
    }

}

因此要限制单继承;但是接口不同,接口没有方法体,也就是没有功能,功能是实现类来做的,因此不用考虑让谁做的问题;定义的属性也是常量,要通过接口名来调用;

public interface Test02 {
    public  final static String name="zhangsan";
    public void getDatea();
    public void getDatea(String name);
}
 public  interface Test01 {
    public  final static name="lisi";//可以定义但是不能访问
    public void getDatea();
}

public class Test03 implements  Test01 , test02 {
    @Override
    public void getDatea() {//getDatea方法只需要重写一个即可,

        Test01.name;//得到李四 lisi
        Test02.name;//可以访问 得到 zhangsan

    }

    @Override
    public void getDatea(String name) {

    }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值