词条 | 向上转型 |
释义 | 这是面向对象(c# Java AS3.0)编程(oop)中多态的方面,分为向上转型和向下转型。 假定父类为 动物,子类为狗,父类有一个方法 发声()。在子类重写该方法 则(以下过程c#实现): 动物 a=new 狗();//这就为向上转型 a.发声(); 在调用 a.发声();时调用的是动物的发声()也可调动物类其他方法 但不能调用狗类方法 若修改为 动物 a=new 狗(); 狗b=(狗)a;//这里向下转型 这时b可调用动物类未被重写的方法和狗类所有方法(包括重写动物类的方法) 向上转型都会成功,是安全的。 就像说狗是动物没问题。 接上面 动物 a=new 动物(); a.发声();//调动物类方法 狗 b=(狗)a;//这也是向下转型 但下面通过b若调用 动物 或 狗类中任意方法都报异常 也就是说向下转型可能会出错 不能说动物是狗 JAVA中的一种调用方式 class A{ void f(){} void g(){} } class B extends A{ void g(){} void i(){} } public class C{ public static void main(String[] args){ A a=new B(); //B自动向上转型为A的对象 } } 向上转型并非是将B自动向上转型为A的对象,相反它是从另一种角度去理解向上两字的:它是对A的对象的方法的扩充,即A的对象可访问B从A中继承来的和B复写A的方法。其它的方法都不能访问。即使是A 中的私有成员方法。 |
随便看 |
百科全书收录4421916条中文百科知识,基本涵盖了大多数领域的百科知识,是一部内容开放、自由的电子版百科全书。