我为我的问题写了一个示例代码。我想使用政治主义,我尝试通过对象的类型来更改变量。这段代码正在工作,但这是最好的方法吗?我应该在两个类中使用通用方法来返回变量吗?谢谢
package example;
import java.util.Scanner;
class Animal{}
class Dog extends Animal{}
class Bird extends Animal{}
public class Example {
public static void main(String[] args) {
Animal a;
int leg=0;
Scanner k=new Scanner(System.in);
String s=k.next();
if(s.equals("dog")) a=new Dog();
else a=new Bird();
if(a instanceof Dog) leg+=4;
else if(a instanceof Bird) leg+=2;
System.out.println(leg);
}
}
动物的腿数应该包含在Animal的子类中,而不是像现在那样从外部设置。类似于:
public abstract class Animal {
protected int numLegs;
public int getNumLegs() {
return numLegs;
}
}
public class Dog extends Animal {
public Dog() {
numLegs = 4;
}
}
祝你好运!
您应该将公共功能放入父类Animal
中,并在子类Bird
和Dog
中实现特定的功能。
abstract class Animal {
abstract int legs();
}
class Bird extends Animal {
@Override
int legs() {
return 2;
}
}
class Dog extends Animal {
@Override
int legs() {
return 4;
}
}
不需要instanceof
,只需调用legs
的Animal
方法,实现类将输出正确的值。
public class Example {
public static void main(String[] args) {
Animal animal;
Scanner sc = new Scanner(System.in);
String s = sc.nextLine();
if(s.equals("dog")) {
animal = new Dog();
} else {
animal = new Bird();
}
System.out.println(animal.legs());
}
}