public class Fu {
int num = 10;
public void method(){
System.out.println("Fu....method");
}
}
public class Zi extends Fu {
int num = 20;
@Override
public void method() {
System.out.println("Zi...method");
}
public void show(){
System.out.println("Zi类特有的方法,show");
}
}
public class TestPolymorpic {
public static void main(String[] args) {
// 向上转型
Fu f = new Zi();
System.out.println(f.num);
f.method();
// 向下转型,或者直接创造子类对象
Zi z = (Zi) f;
z.show();
}
}
// 多态的用处
public class Test1Polymorphic {
public static void main(String[] args) {
useAnimal(new Cat());
useAnimal(new Dog());
}
public static void useAnimal(Animal a){
a.eat();
if(a instanceof Dog){
Dog dog = (Dog) a;
dog.wacthHome();
}
}
}
abstract class Animal{
public abstract void eat();
}
class Dog extends Animal{
@Override
public void eat() {
System.out.println("狗吃肉");
}
public void wacthHome(){
System.out.println("狗特有方法");
}
}
class Cat extends Animal{
@Override
public void eat() {
System.out.println("猫吃鱼");
}
}