简体   繁体   中英

Java: how to implement private abstract methods?

Is it possible to define a private abstract class in Java? How would a Java developer write a construct like below?

public abstract class MyCommand {
    public void execute()
    {
        if (areRequirementsFulfilled())
        {
            executeInternal();
        }
    }
    private abstract void executeInternal();
    private abstract boolean areRequirementsFulfilled();
}

You can't have private abstract methods in Java.

When a method is private , the sub classes can't access it, hence they can't override it.

If you want a similar behavior you'll need protected abstract method.

It is a compile-time error if a method declaration that contains the keyword abstract also contains any one of the keywords private , static , final , native , strictfp , or synchronized .

And

It would be impossible for a subclass to implement a private abstract method, because private methods are not inherited by subclasses; therefore such a method could never be used.


Resources :

That would be protected instead of private . It means that only classes that extend MyCommand have access to the two methods. (So do all classes from the same package, but that's a minor point.)

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM