Accessing Super Class methods

Hi,
If I have a Subclass that overrides a method in a superclass, is it possible to call that method from the superclass?
Thanks

Hi thanks for the reply, but that works for static methods, I'm trying to figure out non-static methods. Below, I want to call the method a() from the superclass using an instance of the subclass.
class superclassA
void a()
System.out.println("in method a");
class subclassA extends superclassA
void a()
System.out.println("in method b");
public class overtest
public static void main(String [] args)
subclassA sub = new subclassA();
superclassA.a();//non-static method a cannot be referenced from a static context
Thanks!

Similar Messages

  • Calling the super class method from the subclass

    Hi all,
    I have a question about inheritence and redefinition of methods. Is it possible to call the superclass implementation of a method which is redefined in the subclass in another method of the subclass?There are possbilities like creation of an explicit super class instance or delegating the super class method implementation to another method which is also protected etc. What i mean is, is there a direct way of calling it?We have ,me,   as the reference for the instance we have(which is the subclass instance in this case), is there also a way of pointing the superclass implementation(with super we can reference in the subclass redefinition, my question is if we have such a parameter in other methods of the subclass too)
    Thanks in advance
    Sukru

    Hi,
    The super reference can only be used in redefined methods to call superclass implementation . So probably what you can do is use upcasting and access the required superclass implementation. I can think of only this way...;-)
    Ex data lr_super type ref to cl_superclass
    lr_super = lr_subclass.
    lr_super->method().
    ~Piyush Patil

  • Overiding super class method to an abstract  method

    public class Super
    public void doSomethingUseful()
    public abstract class Sub extends Super
    public abstract void doSomethingUseful();
    What is the OO principle behind this?
    When do we need to override a super class method in subclass as an abstract?

    Lets first look at a simple design pattern called "Template Method".
    public abstract class Library
    private void collectBooks()
    // collect books here
    private void putBookInShelf()
    // put books in shelf here
    // abstract method sortBooks()
    public abstract void sortBooks();
    public void processBooks()
    collectBooks();
    sortBooks();
    putBooksInShelf();
    this class is an abstract class giving an abstract method called "sortBooks()", what is it useful for? We can make a subclass and implement sortBooks() to sort the books as we want (title wise, author wise, date wise, publisher wise) and then simply call processBooks() to process them.
    One Sub class may look like:
    public class MyLibrary extends Library
    public void sortBooks()
    // sort books by title b/c I like them sorted out by title
    Another sub-class may look like
    public class HisLibrary extends Library
    public void sortBooks()
    // sort books by Author, b/c he likes his books sorted out by author
    Now client will say:
    public static void main(String str[])
    MyLibrary mylib=new MyLibrary();
    mylib.processBooks(); // books will be processed by sorting them title wise
    HisLibrary hislib=new HisLibrary();
    hislib.processBooks(); // books will be processed by sorting them author wise
    So in Library class, method "sortBooks()" was a template method allowing subclasses to sort the books as they want while all other functionality was implemented by Library class itself.
    Now if we go back to your example, a method which is concrete in super class that you converted into an abstract method in sub class ( doSomethingUseful() ) is now a template method, which alows the sub classes of this subclass to do something useful what they think is useful or in other words you are allowing subclasses of this subclass to implement this template method as they want by using their own algorithm.
    Now why whould you do that? answer is that you don't have access to the code of super class, otherwise you must have made this method abstract in super class in the first place.
    Note that the code may not compile, I tried to come up with an exmple and did not pay attention to compiler demands.
    I think I cleared my point, It was tough to explain though.
    Good Luck.
    Khawar.

  • Is it possible to OVERLOAD a super-class method in a sub-class?

    Hi all,
    I have a query that
    Is it possible to OVERLOAD a super-class method in a sub-class?
    If it is possible, please give me an example.
    Thanks,
    Hari

    Hi,
    Is the method int Display(int a){} overloading
    the super-class's void Display() method? If
    possible, please clarify this and how it would be
    method overloading?
    hanks,
    Hari
    Hi Hari,
    Yes, it is possible. Look at this piece of code:
    class Senior
         void Display()
              System.out.println("Super class method");
    class Junior extends Senior
         int Display(int a)
              System.out.println("Subclass method: "+a);
              return(a+10);
         }> }
    class example
         public static void main(String args[])
              Junior j = new Junior();
              j.Display();
    System.out.println("Subclass method
    od "+j.Display(5));
    Is this what you were asking? Hope this helped.Hi,
    I guess you guys are confused here...
    Overloading is achieved by methods in the same class...
    Overriding is across a superclass subclass methds.

  • Query: Accessing super class

    hi friends ,
    i have a small doubt on accessing super class using super keyword.
    does the use of super as super(super(super(i))); work properly
    and what would be the result.
    kindly guide me..........
    jay

    What do you expect that to do? Is that supposed to be a call to a super constructor? (and then super-super, and then super-super-super).
    In any case, you can only call things from the immediate superclass (the parent). If you think you need to call the superclass' superclass (the grandparent), you likely have a bad design.
    What are you trying to do?

  • Can we chagne Super class method parameters in Sub class

    Hi,
    I created a super class.  In that class i created a method. That method is having 4 input parameters and 4 export parameters.
    I created a sub class for that super class. I need to use only 2 input parameters in this class rather than 4 parameters. I want to delete 2 Input parameters in the sub class of the super class method.  Is it possible.
    If possible. can we give an simple code or pseudo code?
    regards,
    krishna

    Hi,
    I think you can not.
    Because, only public attributes can be inherited and they will remain public in the subclass.
    for further detail check,
    http://help.sap.com/saphelp_nw70/helpdata/en/1d/df5f57127111d3b9390000e8353423/content.htm
    regards,
    Anirban

  • How to pass importing parameter of super class method to subclass method?

    hi all,
    i have defined  a class
    CLASS CUST_REPORT DEFINITION.
      PUBLIC SECTION.
        METHODS:DATA_RETRIVE IMPORTING  CUSTID_LOW  TYPE ZCUSTOMER-ZCUSTID
                                       CUSTID_HIGH TYPE ZCUSTOMER-ZCUSTID.
        DATA:IT_CUST TYPE TABLE OF ZCUSTOMER,
             WA_CUST TYPE ZCUSTOMER.
    ENDCLASS.                    "cust_report DEFINITION
    The method DATA_RETRIVE   in this class  has two importing parameters named CUSTID_LOW   and CUSTID_HIGH.
    then i have defined subclas of this clas.
    LASS CUST_ORD DEFINITION INHERITING FROM CUST_REPORT.
      PUBLIC SECTION.
        DATA:IT_ORD TYPE TABLE OF ZORDER.
        METHODS:DATA_RETRIVE  REDEFINITION,
               DISPLAY.
    ENDCLASS.                    "cust_ord DEFINITION
    Method DATA_RETRIVE   is redefined.
    So how to pass importing parameteres of super class method to sub class method with the same name.
    Thanks and Regards,
    Arpita

    Hi,
    I tried like this.
    METHOD DATA_RETRIVE.
    CALL METHOD SUPER->DATA_RETRIVE
          EXPORTING
            CUSTID_LOW  = I_CUSTLOW
            CUSTID_HIGH = I_CUSTHIGH.
    ENDMETHOD.
    But  parameters I_CUSTLOW and I_CUSTHIGH are not getting values after call to method.
    Thanks and Regards,
    Arpita

  • Please Help!!! Problems access other classes methods

    I am having a problem accessing another classes methods varibles. I have tried a number of ways but with no success. Here is my problem:
    I have the main(), from there it's calls the class GetVar(), GetVar stores info in Class HousingForVar(), and finially, I have a class TryinToTalkToHousing() that I use to access HousingForVar()'s methods. I know I can use the keyword new but if I do that then it erases over the data I put in. Please can anyone help, this has been driving me nutz all day. Thank you in advance.
    Roman03
    ***EACH CLASS IS A DIFFERENT FILE****
    public class TestMain
         public static void main( String args[] )
              GetVar getVarible = new GetVar();
              getVarible.heroF();
    import java.util.Scanner;
    public class GetVar
         public void heroF()
              String someEntered;
              Scanner input = new Scanner( System.in);
              System.out.println("Enter a string: ");
              someEntered = input.next();
              HousingForVar houseForData = new HousingForVar(someEntered);
              System.out.printf("Retieved from Class GetVar, you entered: %s\n", houseForData.getCollectVar() );
    import java.util.Scanner;
    public class HousingForVar
         private String getData;
         public HousingForVar(String enterInfo)
              getData = enterInfo;
         public void setGetVar(String enterInfo)
              getData = enterInfo;
         public String getCollectVar()
              return getData;
    import java.util.Scanner;
    public class TryinToTalkToHousing
         public void someMeth()
              String getInfoFromHousing;          
              System.out.printf("Started out at TryinToTalkToHousing Class\n Retieved from Class GetVar from %s\n",
              houseForData.getCollectVar() );
    \* I know this doesn't work, but if I make a new object of the class HousingForVar it's going to write over my input, so what do I do? I am still learning, Please help*\

    I don't use 1.5, so you'll have to convert it back, but see if you can follow the flow of this
    import java.io.*;
    class TestMain
      GetVar getVarible;
      public TestMain()
        getVarible = new GetVar();
        getVarible.heroF();
        System.out.println("******");
        new TryinToTalkToHousing(this).someMeth();
      public static void main(String[] args){new TestMain();}
    class GetVar
      HousingForVar houseForData;
      public void heroF()
        try
          BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
          System.out.print("Enter a string: ");
          String someEntered = br.readLine();
          houseForData = new HousingForVar(someEntered);
          System.out.println("Retieved from Class GetVar, you entered: "+houseForData.getCollectVar()+"\n");
        catch(Exception e){e.printStackTrace();}
    class HousingForVar
      private String getData;
      public HousingForVar(String enterInfo)
        getData = enterInfo;
      public void setGetVar(String enterInfo)
        getData = enterInfo;
      public String getCollectVar()
        return getData;
    class TryinToTalkToHousing
      TestMain parent;
      public TryinToTalkToHousing(TestMain t){parent = t;}
      public void someMeth()
        System.out.println("Started out at TryinToTalkToHousing Class\n"+
        "Retieved from Class GetVar, you entered: "+parent.getVarible.houseForData.getCollectVar()+"\n");
    }

  • Accessing super class  private variables from derived class

    posted November 01, 2005 08:20 PM Profile for kenji mapes Email kenji mapes Send New Private Message Edit/Delete Post Reply With Quote Assume I have a default and a param constructor in both a subclass and a super class. The members are private.
    So after validation logic in the sub class param. constructor, I want to access an instance variable of the super class's default constructor to set the subclass's matching variable to the default in the super class.
    Is there anyway I can do this. Of course, I have inherited setters and getters.
    Thanks.

    posted November 01, 2005 08:20 PM Profile for
    kenji mapes Email kenji mapes Send New Private
    Message Edit/Delete Post Reply With QuoteI suppose this is the result of an attempted crossposting from another forum. :)

  • Accessing Super Class of Super Class

    Consider the following classes
    Class A {
    print() {
    System.out.println("Class A Called");
    Class B extends A {
    print() {
    System.out.println("Class B Called");
    Class C extends B {
    print() {
    System.out.println("Class C Called");
    How can I call the print method of class A while working in class C ? Please state all possible solutions.
    Can it somehow be done using super ?

    RZP wrote:
    Consider the following classes
    Class A {
    print() {
    System.out.println("Class A Called");
    Class B extends A {
    print() {
    System.out.println("Class B Called");
    Class C extends B {
    print() {
    System.out.println("Class C Called");
    How can I call the print method of class A while working in class C ? Please state all possible solutions.
    Can it somehow be done using super ?Here is one possible solution.
    I really don't understand the ramifications of reflection... and am not familiar with OOP design... but reflection seems to enable a programmer to avoid OOP design principals as well as type-checking. While I like reflection, most of my readings suggest to rarely use it.
    public class Main {
      public static void main(String[] args) {
        try {
          new C(789).print();
        } catch(Exception e) { e.printStackTrace();  }
          static class A {
            protected A a;
            protected int id;
            public A(A a, Integer id) {
              this.a = a;
              this.id = id;
            public A(int id) { this.id = id; }
            public void print() {
              System.out.println("Class A called... from a " + a.getClass().getCanonicalName() + " using the original instance with id = " + a.id);
        static class B extends A {
          public B(A a, Integer id) { super(a, id);  }
          public B(int id) { super(id); }
          public void print() { System.out.println("Class B called...");   }
        static class C extends B {
            public C(A a, Integer id) { super(a, id); }
            public C(int id) { super(id); }
            public void print() {
                try {
                    System.out.println("Class C called...");
                    Object obj = getClass().getSuperclass().getSuperclass().getConstructor(A.class, Integer.class).newInstance(this, -111);
                    obj.getClass().getMethod("print", null).invoke(obj, null);
                } catch (Exception e) {
                    e.printStackTrace();
    }Anyway, I think that enables one to invoke overridden methods in super classes, regardless of how "high-up" they are in the class heirarchy (without having to use a new object to do it). Use that idea in an interview at your own risk but just not in interviews for the same position I am trying to get...
    Edited by: dpxqb on Apr 17, 2010 4:43 AM

  • Super class methods

    How to get the methods of current class and its super class using reflection. The retrieved methods should be only the methods of user-defined classes but not methods of Java APIs such as Object or any other class provided in JDK.
    For ex, If Class B is inheriting Class A, i need the methods which are declared only in A & B but not from the Object Class. Similarly, If class C is extending any JDK API such as Thread, I need only the methods declared in class C.

    thanku very much for the answer.
    I am trying to execute the methods of another class using reflection. So I have to consider the inherited methods also. For that, I have to differentiate between standard classes & user-defined classes.Assume that u have one GUI screen where in once u select a class all its methods including inherited methods have to be displayed.
    I can get the the superclass using the method getSuperClass(). But inorder to get the protected methods of superclass what is the method to be used ? If I use getMethods(), it returns only public methods, where as getDeclaredMethods() returns all the methods. Since I have to execute only public & protected methods, what is the best way to solve this ?

  • Accessing private class methods

    This program works, but I am having some problem grasping the concept. If class Room can access methods in class House using gethWidth() and getHeight(), why is it that class Type cannot access those same
    methods. Instead, it can only access setWidth() and
    setHeight()?
    class House {
    private double width;//width of room
    private double length;//length of the room
    double getWidth() {return width;}
    double getLength() {return length;}
    void setWidth(double w) {width=w;}
    void setLength(double l) {length=l;}
    void showdim() {
    System.out.println("My townhouse has two bedrooms.");
    class Room extends House {
    String bedroom;
    double area() {
    return getWidth() * getLength();
    void showBedroom() {
    System.out.println("The biggest room is the" + " " + bedroom + ".");
    class Type {
    public static void main(String args[]) {
    Room r1=new Room();
    Room r2=new Room();
    r1.setWidth(14.5);
    r1.setLength(20.6);
    r1.bedroom="master bedroom";
    r2.setWidth(15.2);
    r2.setLength(15.3);
    r2.bedroom="Guest Room";
    System.out.println();
    r1.showdim();
    r1.showBedroom();
    System.out.println();
    System.out.println("The area of the" + " " + r1.bedroom+ " " +
    "equals"+ " "+ r1.area()+ " " + "square feet.");
    }

    Thanks to all. But the comments provided so far does not answer my question. Over the past few days I have struggled over the question and I think I found the answer. Others are welcome to comment.
    Initially, "width" and "length" were decleared as private in class "House". For other classes to gain access, they had to use "accessor methods". Two accessor methods were decleared: "getWidth" and "getHeight"; and "setWidth" and "setLength". The first two methods "return"; the last two were "void". In class Room, I set up a method to return the calculation, so I used "getWidth and "getLength". In class "Type" I had to use the other method "setWidth", since I was declearing the actual values. Makes sense?

  • Overriding super class methods @ OIM 9x

    Hi All,
    I'm working on a requirement where I need to override superclass method in sub class.The problem is, method defined in sub class is not getting called by OIM.
    My question more looks like Pure Java related,but as it is OIM which uses Struts, calling of ActionForward methods defined in
    protected Map getKeyMethodMap()
    +{+
    +}+
    Super class is OUT OF BOX class and sub class is I m developing.Both superclass & subclass having the protected Map getKeyMethodMap() method with same declaration.
    Can any one give me a clue on this.
    Regards,
    Krish

    HI All,
    Issue resolved after deleting stage & tmp folders in weblogic instance directory and restarted weblogic instance.
    Regards,
    Krish

  • Need to access a parameter in a super class method

    Hi,
    I have the following setup:
    class A{
        exceptionHandler(Throwable ex, int iNeedThis);
    class B extends A{
        execute();
        func1{};
    }When execute() fails, the ecexptionHandler method is automatically called. In func1() of class B I need to access the iNeedThis variable once excute() fails. Is it possible to do this?
    Thanks.

    wow, thats about impossible to follow.
    Let me take a stab.
    If you want to save a value for later use when an exception is thrown, throw your own exception type that stores this info in the exception.
    Or perhaps you are asking something completely different.

  • Access super class private variables

    class A
    private int i,j;
    A()
    i=j=20;
    public void show()
    System.out.println(i+" "+j);
    class B extends A
    int k;
    B()
    super();
    k=20;
    public static void main(String args[])
    B b=new B();
    b.show();
    In the above program, when a instance of class A is created, the memory is allocated for 2 private integer variables(i and j in this case) 8 byte of memory gets allocated and the referance is returned to the object.
    ex:
    A a=new A();
    a contains the address of memory allocated for 2 integer variables.
    In this code there is another class called B which contains only one variable of it's own.when a object is creted for class B only 4 byte of memory is allocated and the reference is returned.
    ex:
    B b=new B();
    b contains address of 4 byte of memory allocated.
    my doubt is when the B's constructor is called,it inturn calls super(),
    where the variables are intialized. variable (i,j) does not exist in memory and how are they getting initialized.are they created at runtime and getting initialized.Though B has no explicit control over these variables it can able to access their values.How is that possible??

    Can you please stop creating multiple threads with the same question. There is already a discussion in your other thread. Please don't waste our time.
    http://forum.java.sun.com/thread.jspa?messageID=4063146#4063146
    Kaj

Maybe you are looking for

  • Is there a solution to Illustrator CC repeatedly crashing on launch after installation?

    After a full successful installation of Illustrator CC, InDesign CC, Photoshop CC, Acrobat Pro CC and Bridge CC on my Mac Pro Desktop, I've been installing the same apps on my MacBook Pro. I've successfully installed and launched InDesign CC, Bridge

  • Video / Audio / Screen Share have all stopped working...

    I've got two business partners in remote locations. All three of us are on MacBook Pros. Mine's several years old, but theirs are both new. We're all using MacOSX 10.5.6 and iChat 4.0.7. All three of us have been able to do video, audio and ScreenSha

  • How to keep zoom ratio in new tabs

    <blockquote>Locking duplicate thread.<br> Please continue here: [[/questions/881761]]</blockquote> How can I keep the zoom in ratio in newly opened tabs?

  • Animating a movie file using vectors

    Hey, I'm trying to do what i do with a bitmap image to a movie file. I just go to modify/bitmap/trace and it traces my bitmap into vectors and makes it look all animated and such. I would like to do the same thing for a movie file that i have. Is the

  • Email setup Application is gone

    I updated my BB Curve and now my email setup application is gone.  i have selected "show all."  so, right now i can't update or verify any of my email accounts.  anyone have a solution?  thanks Solved! Go to Solution.