Java中继承抽象类的downcast和upcast

来源:互联网 发布:餐饮营业额数据分析 编辑:程序博客网 时间:2024/05/23 13:09

test1( ) needs the downcast to call f( ), while test2( ) doesn’t need a downcast
because f( ) is defined in the base class.

/****************** Exercise 4 ****************** Create an abstract class with no methods.* Derive a class and add a method. Create a* static method that downcasts a reference from* the base class to the derived class and calls* the method. Demonstrate that it works in main().* Eliminate the need for the downcast by moving* the abstract declaration to the base class.***********************************************/package interfaces;abstract class NoMethods {}class Extended1 extends NoMethods {public void f() {System.out.println("Extended1.f");}}abstract class WithMethods {abstract public void f();}class Extended2 extends WithMethods {public void f() {System.out.println("Extended2.f");}}public class E04_AbstractBase {public static void test1(NoMethods nm) {// Must downcast to access f():Interfaces 129((Extended1)nm).f();}public static void test2(WithMethods wm) {// No downcast necessary:wm.f();}public static void main(String args[]) {NoMethods nm = new Extended1();test1(nm);WithMethods wm = new Extended2();test2(wm);}} /* Output:Extended1.fExtended2.f*///:~
原创粉丝点击