浅读java编程思想之多态

8.1向上转型:父类对象通过子类对象去实例化,向上转型是不需要进行强制转换的,但是向上转型会丢失精度。

测试一:每个类的实例都经由ride()方法向上转型为Bike

 1 public class Test {
 2     public static void ride(Cycle c) {
 3     }
 4 
 5     public static void main(String[] args) {
 6         ride(new Cycle());
 7         ride(new Unicycle());
 8         ride(new Bicycle());
 9         ride(new Tricycle());
10     }
11 }
12 class Cycle {
13 
14 
15 }
16 class Unicycle extends Cycle {
17 
18 }
19 
20 class Bicycle extends Cycle {
21 }
22 
23 class Tricycle extends Cycle {
24 }

 


测试二:验证多态对方法的有作用

public class Test {
    public static void ride(Cycle c) {
        System.out.println("Num. of wheels: " + c.wheels());
    }

    public static void main(String[] args) {
        ride(new Cycle());
        ride(new Unicycle());
        ride(new Bicycle());
        ride(new Tricycle());
    }
}
class Cycle {
public int wheels(){
    return 0;
}

}
class Unicycle extends Cycle {
    public int wheels(){
        return 1;
}
}
class Bicycle extends Cycle {
    public int wheels(){
        return 2;
}
}

class Tricycle extends Cycle {
    public int wheels(){
        return 3;
}
}
输出:

Num. of wheels: 0
Num. of wheels: 1
Num. of wheels: 2
Num. of wheels: 3

测试三

class Person {
     public void talk(){
         System.out.println("我是人,在说话");
     }
}
 class Children extends Person{
     public void talk(){
         System.out.println("我是小孩,在说话");
     }
     public static void main(String[] args) {
        Person p=new Children();
        p.talk();
    }
 }

输出结果
我是小孩,在说话

 

向下转型 (父类的对象可以转换为子类的对象,但是必须进行强制类型转换)

 class Person {
     public void talk(){
         System.out.println("我是人,在说话");
     }
}
 class Children extends Person{
     public void talk(){
         System.out.println("我是小孩,在说话");
     }
     public void talk2(){
         System.out.println("我是第二个小孩,在说话");
     }
     public static void main(String[] args) {
        Person p=new Children();
        //将p对象向下转型
        Children c=(Children)p;
        p.talk();
    }
 }

 

posted @ 2017-03-29 20:47  池世武  阅读(52)  评论(0)    收藏  举报