4 2 Test Ostrich java public class Test
程序 4. 2 Test. Ostrich. java public class Test. Ostrich { public static void main(String[] args) { Bird ostrich 1 =new Ostrich(); //向上转型 ostrich 1. fly(); } } class Bird { public static void fly(){ System. out. println("Bird Flying!"); } } class Ostrich extends Bird{ public static void fly(){ System. out. println("I can't fly!"); } } 输出结果:Bird Flying!
4. 7. 1向上转型(upcasting) public class Shape{ void draw(){} static void start(Shape s){ s. draw(); } public static void main(String [] agrs){ start(new Circle()); start(new Square()); } } class Circle extends Shape{ void draw(){System. out. println(“draw Circle”); } } class Square extends Shape{ void draw(){System. out. println(“draw Square”); } }
4. 7. 3构造器中多态方法的行为 public class Shape 3{ Shape 3(){ System. out. println(“this is a shape”); draw(); } void draw(){} public static void main(String [] agrs){ Shape 3 circle = new Circle(); } } class Circle extends Shape 3{ int i = 100; Circle(){ draw(); } void draw(){System. out. println(“draw Circle” + i); } } 最后的输出结果是: this is a shape draw Circle 0 draw Circle 100 不是我们希望的结果。
4. 7. 4向下转型 class A { public void f() {}; public void g() {}; } class B extends A{ public void f() {}; public void g() {}; public void h() {}; } class C extends A{ public void f() {}; public void g() {}; public void u() {}; } class D extends A{ public void f() {}; public void g() {}; public class test. Rtti { public static void main(String[] args) { A a 1 = new A(); A a 2 = new B(); A a 3 = new C(); a 1. f(); a 2. g(); a 3. g(); } //a 2. h(); (B)a 2. h(); //向下转型 (C)a 2. h(); //异常 }
- Slides: 21