elsni
elsni

Reputation: 2053

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();
}

Upvotes: 36

Views: 44893

Answers (2)

Roland Illig
Roland Illig

Reputation: 41617

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.)

Upvotes: 8

Colin Hebert
Colin Hebert

Reputation: 93157

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 :

Upvotes: 73

Related Questions