Oop 继承,带接口的组合
根据我的理解,类继承和接口继承都可以。接口是提供封装的方式之一 Q1:那么为什么“继承总是有弱封装” 问题2:界面合成被认为是一种很好的设计工具。如何以及为什么Oop 继承,带接口的组合,oop,inheritance,interface,composition,Oop,Inheritance,Interface,Composition,根据我的理解,类继承和接口继承都可以。接口是提供封装的方式之一 Q1:那么为什么“继承总是有弱封装” 问题2:界面合成被认为是一种很好的设计工具。如何以及为什么 请提供Java代码示例(如果可能的话),以便更好地理解。继承并不总是具有弱封装 引用精彩文章 在继承关系中,超类通常被称为 “脆弱”,因为对超类的一点小小的更改就可以产生涟漪 并且需要在应用程序代码的许多其他地方进行更改。到 更具体地说,超类真正脆弱的是它的 界面如果超类设计良好,具有干净的分隔 面向对象风格的接口和实现,任何 对超类实
请提供Java代码示例(如果可能的话),以便更好地理解。
继承
并不总是具有弱封装
引用精彩文章
在继承关系中,超类通常被称为
“脆弱”,因为对超类的一点小小的更改就可以产生涟漪
并且需要在应用程序代码的许多其他地方进行更改。到
更具体地说,超类真正脆弱的是它的
界面如果超类设计良好,具有干净的分隔
面向对象风格的接口和实现,任何
对超类实现的更改根本不应该引起涟漪。
但是,对超类接口的更改可能会产生涟漪并导致错误
中断使用超类或其任何子类的任何代码。
此外,超类接口的更改可能会破坏代码
它定义了它的任何子类
我肯定读了这篇文章,并浏览了各种不同的文章的网站。一些谷歌搜索可能也会有所帮助:)
描述弱封装的小示例
:
class Base {
public void foo() {
bar();
}
public void bar() {}
}
class Derived extends Base {
@Override
public void bar() {
foo();
}
}
public static void main(String[] args) {
new Child().bar();
}
似乎重写的bar
会调用foo
,它会在base
类中调用bar
,但事实证明,这是一个无限递归
如果使用得当,这是一个相当强大的工具。例如,如果实现接口
,则需要在派生类
中实现基类
中的所有方法。如果您知道存在具有默认行为的方法,请使用继承
,它不需要实现所有方法,只需要实现那些需要重写的方法
@sam2090-谢谢您的回答。虽然我不清楚“如果您知道有些方法具有默认行为,请使用继承,它不需要实现所有方法,只需要实现需要重写的方法”。@sumit Check。这肯定会对你有帮助