接口理解2

java不支持多继承,因为存在安全隐患,当多个父类中定义了相同的成员变量和相同的方法时,子类不确定要调用哪一个,但是java保留了这种机制,并用另一种体现形式来表示-也就是接口的多实现。我们可以通过下面两个例子来验证。
1.若子类继承的父类拥有相同的成员变量,那么子类在调用改成员变量时,就不确定调用哪个父类的成员变量如:
  class A{//父类A
        protected int num=0;
    }
     class B{//父类B
        private int num=1;
    }
    public class C extends A,B{
        public static void main(String[] args){
        C obj=new C();
        obj.print();//调用父类的成员变量,那num是0还是1?
        }
        public void print(){
            System.out.println(super.num);
        }
    }

2.若一个子类继承的多个父类中拥有相同的方法,同时子类并未重写该方法,(若重写,则直接使用子类中该方法),那么调用时将不确定调用哪个方法。如:

public class A{
    public void fun(){//父类A
        System.out.println("Hello");
    }
public class B{
    public void fun(){
        System.ot.println("Hello");
    }
public class C extends A,B{
    public static void main(String[] args){
        C obj=new C();
        obj.print();
    }
    public void print(){
        System.out.println(sper.fun);// 因为父类都有//fun()方法,将无法确定使用,哪个父类中的方法。
        }
    }
因此当一个继承多个类时,如果继承的多个父类出现了相同的方法时,就出现了调用的不确定性,这个不确定是指方法体不确定虚拟机就挂了。然后解释为什么支持多实现:虽然实现了多个接口,但是接口中的方法没有方法体,不管你调用复写实现的接口中任意方法都是一样的,因为它没有方法体,方法明名相同也没问题。
在类中,只能做单重继承,而实现接口时,一次则可以实现多个接口,每个接口间使用逗号“,”分隔。如:
//类与类  ---继承
//类与接口---实现
//接口与接口---继承

public class A6_62接口_2 {


    public static void main(String[] args) {
        Students one=new Students();
        one.smoket();
        one.play();

    }

}
interface smokets{//同一个包中接口不能重名
    public abstract void smoket();
}
interface geme{
    public abstract void play();
}
class Students implements smokets,geme{//注意在含有实现implements 关键字的类
                                        //分别要实现接口的方法。
        public void smoket(){
            System.out.println("在吸烟");

    }

        public void play() {
            System.out.println("在游戏");

        }


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值