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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/277.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
Java 未实现的子类_Java_Oop - Fatal编程技术网

Java 未实现的子类

Java 未实现的子类,java,oop,Java,Oop,我左右为难 class A { protected int x; } class B extends A { private int y; } 我可以在我的代码中使用这个层次结构,但我想知道是否可以向这个层次结构添加新类: class C extends A {} 类C只是用于类型,所以我可以将A重命名为Base,并有两个类继承自Base,但其中一个与基类完全相同 什么是更好的解决方案?代码是描述您正在解决的业务问题的抽象。如果在您的业务领域中引入空类是有意义的,那么没有什么可

我左右为难

class A {
   protected int x;
}

class B extends A {
   private int y;
}
我可以在我的代码中使用这个层次结构,但我想知道是否可以向这个层次结构添加新类:

class C extends A {}
类C只是用于类型,所以我可以将A重命名为Base,并有两个类继承自Base,但其中一个与基类完全相同


什么是更好的解决方案?

代码是描述您正在解决的业务问题的抽象。如果在您的业务领域中引入空类是有意义的,那么没有什么可以阻止您引入空类。引用Steve McConnell的话,主要目标是使代码可读:

好的代码是它自己最好的文档。当您准备添加注释时,问问自己,‘如何改进代码,使其不需要注释?’改进代码,然后将其记录下来,使其更加清晰

但是,如果您必须在
B
C
中两次实现相同的方法,则不鼓励这样做。这将导致代码重复


这种方法通常用于中的接口。

没有实现的类是糟糕设计的标志,只有当您的某些行为因父类和位置而异时,才需要创建新类。因此,在您的情况下,您不需要创建C,只需将A重命名为Abstract,Base并使其抽象即可。这样,您就有了抽象类和实现(A和B),在进一步的开发中,您可能需要使用另一个类型A的实现并从中扩展,只有这样您才需要创建类C。

您实际上想要完成什么?为什么不首先使用
A而不是从中继承呢?听起来像是一个问题。你想解决什么问题?