我有3个不同的类:
1级(超级) 2级(SubClass) 3级(SubClass)
在Class 1中,我有一个名为NUMBER的实例变量,以及一个名为myNumber的方法。
我正在尝试创建一个if / else语句,因此如果我们为类2调用.myNumber方法,则NUMBER等于7.但是,在类3中,我希望该数字等于8.
我的if else语句看起来像这样:
if (Class2)
{
myNumber = 7
}
else if (Class3)
{
myNumber = 8
}
但是,我不知道如何引用Class2和Class3,而我正在使用Class3编写代码。
任何帮助都会很棒! :)
答案 0 :(得分:2)
您可以通过继承轻松完成此操作:
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;
}
}
答案 1 :(得分:2)
你不懂多态。您需要从所需的类扩展而不是使用if/else
语句,并在重写方法的帮助下引入新行为。接受父类的所有代码都将接受子类,因为它们都是是父(https://en.wikipedia.org/wiki/Is-a),并且可以做父母做的任何事情,但可能会有不同的行为。示例:
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;
}
测试类:
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());
}
}