public abstract class Animal {
}
public class Dog extends Animal{
public int leg;
public Dog(){
this.leg = 4;
}
}
public class Fish extends Animal{
public int fin;
public Fish(){
this.fin=2;
}
}
public class Main {
public static void main(String[] args) {
Animal a;
if (Math.random()>0.5)
a = new Fish();
else
a= new Dog();
System.out.println("Is a Dog?");
if (/*这里如何判断*/){
System.out.println("yes");
System.out.println("It has " + /*a.leg(这个错的,要如何调用)*/ + " legs");
}
else{
System.out.println("No");
System.out.println("It has " + /*a.fin(这个错的,要如何调用)*/ + " fins");
}
}
}
本人新手,用反射是不是可以。
不是很清楚,我也是新手,反射也不是太明白
a.getClass() == Dog.getClass()
instanceof
http://blog.csdn.net/mydwr/article/details/9332293
a instanceof Dog
((Dog)a).leg 这样可以
还有就是反射了
public class Main {
public static int leg(Animal a){
return 0;
}
public static int leg(Fish f){
return f.fin;
}
public static int leg(Dog d){
return d.leg;
}
public static void main(String[] args) {
Animal a;
if (Math.random()>0.5)
a = new Fish();
else
a= new Dog();
System.out.println("Is a Dog?");
if (a instanceof Dog){
System.out.println("yes");
System.out.println("It has " + ((Dog)a).leg + " legs");
}
else{
System.out.println("No");
System.out.println("It has " + ((Fish)a).fin + " fins");
}
}
}