java - java中继承中实现代码重用

标签 java inheritance

我听说我们可以通过继承来实现代码的可重用性,例如:从父类(super class)A中,如果扩展了类B,我们可以将除私有(private)方法之外的方法继承到类B,并假设两个类都在同一个包中。如果这是在继承中实现代码可重用性的方法,那么我们也可以通过创建该类 A 的对象来获得同样的效果,对吧?我的意思是通过创建一个对象,我们可以访问私有(private)方法以外的公共(public)方法,对吧?为什么我们需要继承?继承中的代码可重用性如何?

最佳答案

无论谁告诉你这个,都给了你“糟糕”的建议。

继承的主要目标不是为了代码的重用。

类旨在构建现实的模型(也称为抽象);更具体地说:一个有用模型。其中一个核心部分是:您不必写下class A extends B,因为这样做方便,或者因为它可以帮助您节省一些编码工作。

你这样做,因为在你的问题域中,任何 A is-A B 都是有意义的。这是继承的核心:两个对象显示相同 行为。

而且:相反,更相关和更被接受的范式恰恰相反:FCoI (优先考虑组合而不是继承)。

请不要误会我的意思:代码重复是作为程序员可以做的最糟糕事情之一。因此,避免代码重复是良好编程的核心优点之一。但是:继承会造成类之间的耦合;通过放弃类的隔离来防止代码重复并不是一个好主意。因为继承可以防止您在另一个上下文中重复使用类。

含义:有时继承可以很好地防止代码重复;但你必须小心。

关于java - java中继承中实现代码重用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43745308/

相关文章:

javascript - 我想我在 Dean Edward 的 Base.js 类中发现了一个错误

c# - 从 "Access"类继承类后,使用 "protected"关键字时出现错误

c - 面向对象的C : Building vtables

c++ - 在 C++ 中继承 C 结构并将其传递回 C 库是否安全?

java - 从 Head First Java 开始

java - 设置 JSlider 限制

java - 为什么我的代码总是允许重复的名称?

c++ - 访问父类(super class)类型成员对象的 protected 成员——一个优雅的解决方案

java - 运行单元测试时出现 Spring 上下文问题

java - Spring Boot 应用程序在 AWS Lambda 中运行时抛出 MultipartException