Accessing super class function using subclass object

22,117

Solution 1

No, it's not possible, and if you think you need it, rethink your design. The whole point of overriding a method is to replace its functionality. If a different class knows that much about that class's internal workings, you're completely killing encapsulation.

Solution 2

Here it prints Subclass go . Instead I have to print Superclass go

Alright, then do not override go method @ subclass, it will call superclass implementation.

If you want to run super implementation, and have some other additional code @ subclass, you call super.go(); and then run some other statements.

It's ok, as you are reusing already written code, you shouldn't copy-paste code from superclass and put it into subs as it's code duplication. But if your goal is to change behaviour completely, then don't call super

Solution 3

Instead of:

System.out.println("Subclass go");

Write

super.go();

(Or, you know, just don't implement that method ...).

Share:
22,117
bdhar
Author by

bdhar

Updated on July 05, 2022

Comments

  • bdhar
    bdhar about 2 years

    I have an object of a subclass extending its superclass. There is an overridden method in subclass which can be called using the object. Is that possible to call the superclass's function using the subclass object?

    package supercall;
    
    public class Main {
    
        public static void main(String[] args) {
            SomeClass obj = new SubClass();
            obj.go();   //is there anything like, obj.super.go()?
        }
    
    }
    
    class SomeClass {
        SomeClass() {
    
        }
        public void go() {
            System.out.println("Someclass go");
        }
    }
    
    class SubClass extends SomeClass {
        SubClass() {
    
        }
        @Override
        public void go() {
            System.out.println("Subclass go");
        }
    }
    

    Consider the code above.

    Here it prints

    Subclass go

    . Instead I have to print

    Superclass go

    .