• 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() {...}
    }
  • 相关阅读:
    ubuntu 12.04 挂载windows分区
    linux ubuntu12.04 配置jdk
    java.lang.IllegalStateException: Cannot forward after response has been committe
    linux ubuntu 安装vim!
    linux ubuntu12.04 eclipse安装 svn
    linux下 android环境配置!
    ubuntu 12.04 配置telnet
    测试下来比较好用的jquery upload插件——uploadify
    google市场又能用了
    当php.ini里post_max_size配置段使用简写法导致php无法接收$_POST值的!
  • 原文地址:https://www.cnblogs.com/qionglouyuyu/p/4609451.html
Copyright © 2020-2023  润新知