java抽象类继承

java抽象类继承,java,inheritance,Java,Inheritance,我有一个抽象类,这个类在她的子类中扩展: 我在这个抽象类上实现了一个方法,并制作了另一个方法抽象 实现的方法是每个子类对象都必须访问的通用方法。因此我决定在抽象类上实现它,避免在每个子类上实现相同的方法 小例子: public abstract class Foo{ //plus constructor and other stuff. public abstract void differentTypeOfImplementation();

我有一个抽象类,这个类在她的子类中扩展:

  • 我在这个抽象类上实现了一个方法,并制作了另一个方法抽象
  • 实现的方法是每个子类对象都必须访问的通用方法。因此我决定在抽象类上实现它,避免在每个子类上实现相同的方法
小例子:

public abstract class Foo{

           //plus constructor and other stuff.

        public abstract void differentTypeOfImplementation();

        public void doSomething(Foo foo){
                        //do something with the generic Foo object passed
        }
}
我想听听你对这种执行方式的意见


问候。

这个问题可能太开放了,但你的解决方案非常好


另一种方法是,您可以使用不同类型的Implementation()创建一个接口,然后使用doSomething创建一个实用程序类。这样,子类也可以从其他类扩展。然而,如果子类偶尔会覆盖doSomething,或者doSomething需要访问对象的内部状态,那么您所拥有的是完全有效的。

在抽象类中实现方法是非常有效和可接受的设计。如果这个方法的实现对于它的所有子类都是必要的,那么这就是解决方法。然而,在您的示例中——方法的签名让它有点可疑——看起来您没有以任何方式使用超类状态。这意味着您可以将此方法声明为
static

看起来像一个普通的习惯用法。不过,一般来说,StackOverflow不适合征求意见,所以这个问题可能会被解决。我认为在Stack Exchange上有一个“代码审查”网站可能更合适。对不起,我不明白为什么我必须声明它为静态?你能说得更具体些吗?@CiMat——取决于你在方法实现中的具体意图——如果你没有访问任何实例级状态(成员或其他非静态方法),那么你可以将其声明为静态。我不是说你必须这么做。视情况而定。