Java 如何防止接口在继承类中实现?
我该怎么做才能使只有D类不能得到I的方法呢。 我现在正在考虑在没有身体的情况下推翻D中所有的“我”方法 我的想法是正确的还是有更好的方法 编辑:D不希望接口I中包含的方法。A的其余方法是继承的。 A是基类。界面I是用于订购视频的界面B、C、E是具有不同权限的用户,D是管理员。Java 如何防止接口在继承类中实现?,java,inheritance,interface,Java,Inheritance,Interface,我该怎么做才能使只有D类不能得到I的方法呢。 我现在正在考虑在没有身体的情况下推翻D中所有的“我”方法 我的想法是正确的还是有更好的方法 编辑:D不希望接口I中包含的方法。A的其余方法是继承的。 A是基类。界面I是用于订购视频的界面B、C、E是具有不同权限的用户,D是管理员。 管理员无法订购视频,因此不需要界面所携带的方法。如果A实现了I,那么A或A的任何子类的任何用户都应该能够期望实现I的方法。这是A与课程中其他课程的“合同”的一部分 对于从A继承的D,它应该是A的“特例”,并且应该实现A定义
管理员无法订购视频,因此不需要界面所携带的方法。如果A实现了I,那么A或A的任何子类的任何用户都应该能够期望实现I的方法。这是A与课程中其他课程的“合同”的一部分 对于从A继承的D,它应该是A的“特例”,并且应该实现A定义的所有功能。继承必然是一种“加法”工具;您可以获得基类中的所有内容,并且可以更改或添加子类中的内容 你说你想减去一些东西——这与面向对象编程相反,也与语言中实现继承(和实现)的方式相反
因此,我认为最好的答案是“是的,有一个更好的方法。”我们不能用这么多的信息来判断它是什么。如果a实现了I,那么a或a的任何子类的任何用户都应该能够期望I的方法被实现。这是A与课程中其他课程的“合同”的一部分 对于从A继承的D,它应该是A的“特例”,并且应该实现A定义的所有功能。继承必然是一种“加法”工具;您可以获得基类中的所有内容,并且可以更改或添加子类中的内容 你说你想减去一些东西——这与面向对象编程相反,也与语言中实现继承(和实现)的方式相反
因此,我认为最好的答案是“是的,有一个更好的方法。”我们不能用这么多的信息来判断它是什么。如果a实现了I,那么a或a的任何子类的任何用户都应该能够期望I的方法被实现。这是A与课程中其他课程的“合同”的一部分 对于从A继承的D,它应该是A的“特例”,并且应该实现A定义的所有功能。继承必然是一种“加法”工具;您可以获得基类中的所有内容,并且可以更改或添加子类中的内容 你说你想减去一些东西——这与面向对象编程相反,也与语言中实现继承(和实现)的方式相反
因此,我认为最好的答案是“是的,有一个更好的方法。”我们不能用这么多的信息来判断它是什么。如果a实现了I,那么a或a的任何子类的任何用户都应该能够期望I的方法被实现。这是A与课程中其他课程的“合同”的一部分 对于从A继承的D,它应该是A的“特例”,并且应该实现A定义的所有功能。继承必然是一种“加法”工具;您可以获得基类中的所有内容,并且可以更改或添加子类中的内容 你说你想减去一些东西——这与面向对象编程相反,也与语言中实现继承(和实现)的方式相反
所以我认为最好的答案是“是的,有更好的方法。”我们不能仅凭这么多的信息就知道它是什么
interface I
class A implements I
class B extends A
class C extends A
class D extends A
class E extends A
这与:
interface I
class superClassA
class A extends superClassA implements I
class B extends superClassA implements I
class C extends superClassA implements I
class D extends superClassA
class E extends superClassA implements I
我将通过以下方式完成这项工作:
interface I
class A implements I
class B extends A
class C extends A
class D extends A
class E extends A
这与:
interface I
class superClassA
class A extends superClassA implements I
class B extends superClassA implements I
class C extends superClassA implements I
class D extends superClassA
class E extends superClassA implements I
我将通过以下方式完成这项工作:
interface I
class A implements I
class B extends A
class C extends A
class D extends A
class E extends A
这与:
interface I
class superClassA
class A extends superClassA implements I
class B extends superClassA implements I
class C extends superClassA implements I
class D extends superClassA
class E extends superClassA implements I
我将通过以下方式完成这项工作:
interface I
class A implements I
class B extends A
class C extends A
class D extends A
class E extends A
这与:
interface I
class superClassA
class A extends superClassA implements I
class B extends superClassA implements I
class C extends superClassA implements I
class D extends superClassA
class E extends superClassA implements I
您可能希望使用类似的工具,可用于隐藏或合并接口。您可能希望使用类似的工具,可用于隐藏或合并接口。您可能希望使用,可用于隐藏或合并接口。您可能希望使用类似的功能,可用于隐藏或合并接口。您可能希望重新考虑您的设计。如果
D
扩展A
,那么D
应该做A
可以做的一切,比如实现接口I
。这是面向对象编程中非常重要的基础
您可以重新设计,以便在保留逻辑继承的同时仍然共享相关代码:
interface I
class superClassA
class A extends superClassA implements I
class B extends A
class C extends A
class D extends superClassA
class E extends A
正如@OliCharlesworth指出的那样,使用组合的解决方案可能更有用。这取决于具体情况,但如果
B、C、D
和E
使用A而不是它们是的话,A组合更合适。你可能想重新考虑你的设计。如果D
扩展A
,那么D
应该做A
可以做的一切,比如实现接口I
。这是面向对象编程中非常重要的基础
您可以重新设计,以便在保留逻辑继承的同时仍然共享相关代码:
interface I
class superClassA
class A extends superClassA implements I
class B extends A
class C extends A
class D extends superClassA
class E extends A
正如@OliCharlesworth指出的那样,使用组合的解决方案可能更有用。这取决于具体情况,但如果
B、C、D
和E
使用A而不是它们是的话,A组合更合适。你可能想重新考虑你的设计。如果D
扩展A
,那么D
应该做A
可以做的一切,比如实现接口I
。