Java的继承与接口
2015-06-30 09:18
731 查看
为什么Java里面只允许单一继承,但允许实现多个接口?
1,为什么不能实现类的多继承?主要是防止多个类有相同的方法名,然而方法体不一样,子类就比较难选择了。所以java和C#不支持类的多继承
2,允许具有多个接口的一个好处就是,当实现多个接口时,如果两个接口有同样的方法,由于接口没有方法体,那么实现一次就可以了。Java 中的接口定义有基本上就是像C++中含虚函数的抽象类。
抽象类继承和接口的区别与使用
假设有一个抽象类Door,有两个方法open和close,此时我们想新建一个类AlarmDoor,需要具有报警功能,是该用抽象类继承还是使用接口?
abstract class和interface的区别:
1.定义上的区别
abstract class可以有自己的数据成员,也可以有非抽象的成员方法;interface只能够有静态的不能被修改的数据成员(即static final,不过在interface中一般不定义数据成员),所有的成员方法都是抽象的。
2.从编程角度
abstract class是一种继承关系,一个类只能使用一次继承关系,但可以实现多个interface
abstract class可以为方法定义默认行为;但interface不能,得使用委托,增加了复杂性。
3. 设计理念层面上的却别
abstract class是继承关系,即父类和派生类存在“is a”关系,即父类和派生类本质相同;interface则不要求,是“like a”关系。
本题答案:
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() {...} }
相关文章推荐
- GC (二)Garbage Collection in Java
- Java点滴:Map与String的转换公共方法
- 通过字节码分析java中的switch语句
- 解决MyEclipse报错问题
- Java性能优化:垃圾回收(GC)
- Java实现求二叉树的深度和宽度
- LeetCode85 Maximal Rectangle java题解
- 深入理解Spring AOP之二代理对象生成
- 黑马程序员——Java中JDK1.5的一些新特性
- JAVA中堆和栈的区别
- spring bean的创建方式
- spring常用属性或是构造方法参数的配置
- spring4 初始化bean回调
- spring bean继承
- Java系列之EJB
- Spring它不支持依赖注入static静态变量
- 使用Gradle构建Java项目
- maven构建java web项目(eclipse原理同)
- 深入 Java 调试体系,第 2 部分: JVMTI 和 Agent 实现
- 基于 JVMTI 实现 Java 线程的监控