Steveman30290
Steveman30290

Reputation: 561

Using Java Inheritance, how do I refer to a specific subclass while I'm in the superclass

I have 3 different Classes:

Class 1 (Super Class) Class 2 (SubClass) Class 3 (SubClass)

In Class 1, I have an instance variable called NUMBER, and a method called myNumber.

I am trying to make an if/else statement, so that if we are calling the .myNumber method for Class 2, NUMBER equals 7. However, in Class 3, I want that number to equal 8.

My if else statement looked like this:

if (Class2) 
{
   myNumber = 7 
} 

else if (Class3) 
 { 
   myNumber = 8
 }

However, I have no idea how to refer to Class2 and Class3, while I'm making the code in Class3.

Any help would be great! :)

Upvotes: 0

Views: 71

Answers (2)

fxrbfg
fxrbfg

Reputation: 1786

You don't understand polymorphysm. Instead of use if/else statements you need to extends from desired class and introduce new behavior with help of overriding methods. All code that accept parent class will accept child classes because all of them is-a parent (https://en.wikipedia.org/wiki/Is-a), and can do anything what parent do, but may differ they behavior. Example:

class ClassOne {
    private int number = 1;

    public int getNumber() {
        return number;
    }

}

class ClassTwo extends ClassOne {

    public int getNumber() {  
        return 2;
}

class ClassThree extends ClassOne {

    public int getNumber() {
        return 3;
}

Test class:

 public class TestClass {

        public static void main(String... args) {
            ClassOne classOne = new ClassOne();
            ClassOne classTwo = new ClassTwo();
            ClassOne classThree = new ClassThree();

            TestClass test = new TestClass();
            test.printNumberFrom(classOne);   // prints 1
            test.printNumberFrom(classTwo);   // prints 2
            test.printNumberFrom(classThree); // prints 3
        }

        //knows only about ClassOne but may accept it's childs
        public void printNumberFrom(ClassOne classOne) { 
            System.out.println(classOne.getNumber());
        }

    }

Upvotes: 3

BackSlash
BackSlash

Reputation: 22243

You can easily do this via inheritance:

class Class1 {
    int number = 5;

    public void myNumber() {

    }
}

class Class2 extends Class1 {

    @Override
    public void myNumber() {
        number = 7;
    }
}

class Class3 extends Class1 {

    @Override
    public void myNumber() {
        number = 8;
    }
}

Demo

Upvotes: 2

Related Questions