zoukankan      html  css  js  c++  java
  • Java的继承与接口

    为什么Java里面只允许单一继承,但允许实现多个接口?
    1,为什么不能实现类的多继承?主要是防止多个类有相同的方法名,然而方法体不一样,子类就比较难选择了。所以java和C#不支持类的多继承
    2,允许具有多个接口的一个好处就是,当实现多个接口时,如果两个接口有同样的方法,由于接口没有方法体,那么实现一次就可以了。Java 中的接口定义有基本上就是像C++中含虚函数的抽象类。
     
    抽象类继承和接口的区别与使用
    假设有一个抽象类Door,有两个方法open和close,此时我们想新建一个类AlarmDoor,需要具有报警功能,是该用抽象类继承还是使用接口?
    abstract class和interface的区别:
    1.定义上的区别
    abstract class Demo{
        abstract void method1(); 
        abstract void method2(); 
        ...
    }
    interface Demo {
        void method1();
        void method2();
      ...
    }
    abstract class可以有自己的数据成员,也可以有非抽象的成员方法;interface只能够有静态的不能被修改的数据成员(即static final,不过在interface中一般不定义数据成员),所有的成员方法都是抽象的。
    2.从编程角度 
    abstract class是一种继承关系,一个类只能使用一次继承关系,但可以实现多个interface
    abstract class可以为方法定义默认行为;但interface不能,得使用委托,增加了复杂性。
    3. 设计理念层面上的却别
    abstract class是继承关系,即父类和派生类存在“is a”关系,即父类和派生类本质相同;interface则不要求,是“like a”关系。
     
    本题答案:
    abstrat class Door{
        abstract void open();
        abstract void close();
    }
    interface Alarm {
        void alarm();
    }
    class AlarmDoor extends Door implements Alarm {
        void open() {...}
        void close() {...}
        void alarm() {...}
    }
  • 相关阅读:
    Codeforces 765 E. Tree Folding
    Codeforces 617 E. XOR and Favorite Number
    2017.3.4[hihocoder#1403]后缀数组一·重复旋律
    2017.2.23[hdu1814]Peaceful Commission(2-SAT)
    2017.2.18Codeforces Round #398 (Div. 2)
    2017.2.18[codevs1170]NOIP2008提高组复赛T4双栈排序
    2017.2.18[codevs3319][bzoj3670]NOI2014D2T1动物园
    2017.2.18[codevs3311][bzoj3668]NOI2014D1T1起床困难综合症
    2017.2.10 Splay总结
    2017.2.10考试总结2017冬令营
  • 原文地址:https://www.cnblogs.com/qionglouyuyu/p/4609451.html
Copyright © 2011-2022 走看看