Over a million developers have joined DZone.
{{announcement.body}}
{{announcement.title}}

Java Method Overriding and Visibility [Snippet]

DZone's Guide to

Java Method Overriding and Visibility [Snippet]

While overriding methods in Java is pretty straightforward, there are a couple subtleties that do come up every now and again. We take a look at one such gotcha.

· Java Zone
Free Resource

Bitbucket is for the code that takes us to Mars, decodes the human genome, or drives your next car. What will your code do? Get started with Bitbucket today, it's free.

This post is about a little test I set up to get my head around one aspect of method overriding in Java. A method in a superclass can call either another superclass method or a subclass method, depending on the visibility of the methods involved.

These are the demo classes:

public class SuperClass {

    public String a() {
        return b();
    }

    public String b() {
        return c();
    }

    public String c() {
        return "superclass";
    }

}

public class Subclass extends SuperClass {

    public String a() {
        return b() + b();
    }

    public String c() {
        return "subclass";
    }

}


new SuperClass().a() returns “superclass”. new SubClass().a() returns “subclasssubclass”.

If we change the visibility of method c() to private, however:

new SuperClass().a() returns “superclass”. new SubClass().a() returns “superclasssuperclass”.

In other words, superclass method b() will call the subclass implementation of c() if it is visible, or the superclass implementation if it is not.

Of course, if we then overrride b() in the subclass as well, things change again. Then we will see new SubClass().a() returns “subclasssubclass” no matter whether c() is public or private.

Bitbucket is the Git solution for professional teams who code with a purpose, not just as a hobby. Get started today, it's free.

Topics:
java ,method ,override ,visibility

Published at DZone with permission of Jaime Metcher, DZone MVB. See the original article here.

Opinions expressed by DZone contributors are their own.

THE DZONE NEWSLETTER

Dev Resources & Solutions Straight to Your Inbox

Thanks for subscribing!

Awesome! Check your inbox to verify your email so you can start receiving the latest in tech news and resources.

X

{{ parent.title || parent.header.title}}

{{ parent.tldr }}

{{ parent.urlSource.name }}