下面是楼主的部分代码:
public static void main()
{
A a;
a=new B();//向上转型,举个毕老师的例子, byte a=10;
int b=a;//这里!a原来是byte类型的,赋给b以后,就成了int类型了,这说明a被提升了,这就是向上转型
//如果这里要问问什么要用 向上转型,其实这里是多太的运用啊,是“父类的引用(A a),指向子类的对象(new B())”
a.n=0.618
a.m=200;
a.f();
a.g();
B b=(B)a;//向下转型,看这里!a这个对象可以调用n、m、f()、g()等成员,但是a不可以调用cry()这个方法,怎么办????向下转型呗
//再举个毕老师在视频中说的例子,有一个Animal类,(假设里面有sleep()、eat()等方法),Cat继承了这个类(这时Cat就有了sleep()、eat()等方
法了),我们再在Cat类中再加个catchMouse()这个方法,下面这样:
Animal mimi=new Cat();
mimi.sleep();
mimi.eat();//这两个方法都没问题,(但是不能这样:mimi.catchMouse())可是你能叫动物去抓老鼠吗?
Cat mimi2=(Cat)mimi;//这里,你就可以mimi2.catchMouse();这时它是Cat类型的引用了,你就可以说,mimi2去给我抓老鼠去!
b.n=555;
b.cry();
}
|