Reputation: 561
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
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
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;
}
}
Upvotes: 2