在java继承中实现代码重用

在java继承中实现代码重用,java,inheritance,Java,Inheritance,我听说我们可以通过继承来实现代码的可重用性,例如:从一个超类a,我们可以将私有方法以外的方法继承到类B,如果它被扩展并假设这两个类在同一个包中。如果这是在继承中实现代码可重用性的方法,那么我们也可以通过创建该类的对象获得相同的结果,对吗?我的意思是通过创建一个对象,我们可以访问公共方法而不是私有方法,对吗?为什么我们需要遗产?继承中的代码可重用性是什么?是谁告诉你的,给了你“不好”的建议 继承的主要目标是而不是重用代码 类的设计是为了建立一个现实的模型(又称抽象);更具体地说:一个有用的模型。其

我听说我们可以通过继承来实现代码的可重用性,例如:从一个超类a,我们可以将私有方法以外的方法继承到类B,如果它被扩展并假设这两个类在同一个包中。如果这是在继承中实现代码可重用性的方法,那么我们也可以通过创建该类的对象获得相同的结果,对吗?我的意思是通过创建一个对象,我们可以访问公共方法而不是私有方法,对吗?为什么我们需要遗产?继承中的代码可重用性是什么?

是谁告诉你的,给了你“不好”的建议

继承的主要目标是而不是重用代码

类的设计是为了建立一个现实的模型(又称抽象);更具体地说:一个有用的模型。其中的一个核心部分是:你不会写下
类A扩展了B
,因为这样做很方便,或者因为它帮助你节省了一些编码工作

你这样做是因为在你的问题域中,任何一个A都是-AB,这是继承的核心:两个对象表现出相同的行为

而且:与此相反,更相关、更被接受的范式则朝着完全相反的方向发展:(支持组合而不是继承)

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


意思:有时候继承可以很好地防止代码重复;但是你必须小心。告诉你的人给了你“坏”建议

继承的主要目标是而不是重用代码

类的设计是为了建立一个现实的模型(又称抽象);更具体地说:一个有用的模型。其中的一个核心部分是:你不会写下
类A扩展了B
,因为这样做很方便,或者因为它帮助你节省了一些编码工作

你这样做是因为在你的问题域中,任何一个A都是-AB,这是继承的核心:两个对象表现出相同的行为

而且:与此相反,更相关、更被接受的范式则朝着完全相反的方向发展:(支持组合而不是继承)

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


意思:有时候继承可以很好地防止代码重复;但是您必须小心。

如果您想向类a添加一个方法,该怎么办?或者改变一个特定方法的功能(同时保留其他方法)?还有,在什么方面解释不清楚?通过使用接口和组合可以更好地实现代码的可重用性。如果您想向类a添加一个方法,该怎么办?或者改变一种特定方法的功能(同时保留其他方法)?解释的不明确程度如何?通过使用界面和组合可以更好地实现代码的可重用性。我举了一个例子来支持这个答案:我在工作中使用相机。我们有连接到不同型号的设备,所以我们有一个抽象的“camera类”,每个型号都继承自该类,以支持该相机的特定功能。这是一个真实的例子,不难理解。不要同意“代码复制是程序员最糟糕的事情之一”。事情没那么简单。。但我相信你也知道这一点。OP在“使用继承来实现代码重用”的上下文中提出问题。我的眼睛很窄。除此之外:代码复制的问题是维护,以及引入错误的可能性增加。一旦你开始拥有几乎相同的克隆体。。。那就是虫子进来的时候。太多的人根本不在乎这一点。我的意思是:在现实世界中,问题是由那些只是继续进行复制/粘贴的人造成的。所以我更喜欢在“不要这样做”的一边出错……我有一个例子来支持这个答案:我在工作中使用相机。我们有连接到不同型号的设备,所以我们有一个抽象的“camera类”,每个型号都继承自该类,以支持该相机的特定功能。这是一个真实的例子,不难理解。不要同意“代码复制是程序员最糟糕的事情之一”。事情没那么简单。。但我相信你也知道这一点。OP在“使用继承来实现代码重用”的上下文中提出问题。我的眼睛很窄。除此之外:代码复制的问题是维护,以及引入错误的可能性增加。一旦你开始拥有几乎相同的克隆体。。。那就是虫子进来的时候。太多的人根本不在乎这一点。我的意思是:在现实世界中,问题是由那些只是继续进行复制/粘贴的人造成的。所以我更喜欢在“不要这样做”的一边犯错。。。