黑马程序员技术交流社区
标题:
对象类型的转换(向上转型)
[打印本页]
作者:
黑白小調°
时间:
2014-2-16 22:29
标题:
对象类型的转换(向上转型)
这个转型是怎样实现的?class Quadrangle
{
public static void draw (Quadrangle q)
{
//SomeSentence
}
}
public class Parallelogram Quadrangle
{
public static void main(String args[])
{
Parallelogram p =new Parallelogram( );
draw(p);
}
}
作者:
一年_Hei
时间:
2014-2-16 22:48
调用draw(p)时,//Quadrangle q=new Parallelogram() 父类引用指向子类对象
作者:
疲劳的小马
时间:
2014-2-16 22:58
楼主这句少些了一个关键字extends,应该是public class Parallelogram extends Quadrangle,执行到语句draw(p)时,就相当于Quadrangle q=new Parallelogram() ,这个就是父类引用指向子类对象,是多态。其实本例中父类Quadrangle中的draw方法是静态的,可以直接用类名进行调用,不需要创建对象。
作者:
lgqioi
时间:
2014-2-17 00:28
多态:父类的引用指向了自己的子类对象,也可以接收自己的子类对象。
abstract class Animal{
abstract void eat();
}
class Cat extends Animal{
public void eat(){
System.out.println("吃鱼");
}
public void catchMouse(){
System.out.println("抓老鼠");
}
}
class pq{
public static void main(String[] args) {
function(new Cat());
}
public static void function(Animal a){ //Animal a = new Cat();
a.eat();
}
}
作者:
徐青松
时间:
2014-2-17 00:46
调用draw(p)时,这里的p是子类对象,原本draw()方法参数是p的父类,这里可以自动向上转型是因为多态的应用:父类的引用指向了自己的子类对象,也可以接收自己的子类对象。相当于执行了Quadrangle q=new Parallelogram(),父类引用指向子类对象。可以把父类参数想象成是Object类型,子类p想象成Object的子类String,Object object=new String("abc")没问题,object可以接受String类型,object=p可以赋值,但是p=(String)object这里就必须强制转换。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2