Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Oop 继承,带接口的组合_Oop_Inheritance_Interface_Composition - Fatal编程技术网

Oop 继承,带接口的组合

Oop 继承,带接口的组合,oop,inheritance,interface,composition,Oop,Inheritance,Interface,Composition,根据我的理解,类继承和接口继承都可以。接口是提供封装的方式之一 Q1:那么为什么“继承总是有弱封装” 问题2:界面合成被认为是一种很好的设计工具。如何以及为什么 请提供Java代码示例(如果可能的话),以便更好地理解。继承并不总是具有弱封装 引用精彩文章 在继承关系中,超类通常被称为 “脆弱”,因为对超类的一点小小的更改就可以产生涟漪 并且需要在应用程序代码的许多其他地方进行更改。到 更具体地说,超类真正脆弱的是它的 界面如果超类设计良好,具有干净的分隔 面向对象风格的接口和实现,任何 对超类实

根据我的理解,类继承和接口继承都可以。接口是提供封装的方式之一

Q1:那么为什么“继承总是有弱封装”

问题2:界面合成被认为是一种很好的设计工具。如何以及为什么


请提供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。这肯定会对你有帮助