这里涉及到多态的自动向上转型问题。
17行代码: A a = get();
get()返回的类型实际是B类,但因B类实现了A接口,故B类是A接口的实现子类,可用多态方式进行定义。
这里要注意的是,进行多态定义时,定义的子类会自动转型为A接口类型,只能调用A接口中的方法,不能获取子类中的特有方法,必须进行向下转型,才能调用子类特有方法。
- interface A{}
- class B implements A
- {
- public String test()
- {
- return "yes";
- }
- }
- class Demo
- {
- static A get()
- {
- return new B();
- }
- public static void main(String[] args)
- {
- A a = get();
- System.out.println(((B)a).test());//进行向下转型,调用B类中的特有方法
- }
- }
复制代码
|