码迷,mamicode.com
首页 > 其他好文 > 详细

scjp考试准备 - 9

时间:2014-08-29 22:38:28      阅读:192      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   color   java   ar   2014   div   代码   

题目为如下代码的执行结果:

abstract class Vehicle{
    public int speed(){
        return 0;
    }
}

class Car extends Vehicle{
    public int speed(){
        return 60;
    }
}

class RacerCar extends Car{
    public int speed(){
        return 150;
    }
    
    public void run(){
        System.out.println("I‘m running...");
    }
}

public class Test{
    public static void main(String[] args){
        RacerCar racer = new RacerCar();
        Car car = new RacerCar(); 
        Vehicle vehicle = new RacerCar(); 
        System.out.println(racer.speed() + ", " + car.speed()  + ", " + vehicle.speed()); 
    }
}

 

分析下题目。题中考查的点是java的多态性。如题中的“Car car = new RacerCar(); ”一句,其中变量car在编译时类型是Car,在运行时类型是RacerCar。如这种情形,在运行时调用引用变量的方法时,其方法行为总是表现出子类方法的特征,而不是父类方法的行为特征,这就可能出现:相同类型的变量,调用相同的方法,呈现出不同的行为特征。这就是多态性。

需要注意的是,引用变量在编译时只能调用它编译时类型所具有的方法,而在执行时执行的是它的运行时类型的方法。如上面的代码中,如果让car变量执行run()方法,那么将会无法编译,因为编译时类型Car没有run()方法。尽管car变量所指向的对象确实有run()方法(反射时可见)。

看一下执行结果:

bubuko.com,布布扣

scjp考试准备 - 9

标签:style   blog   http   color   java   ar   2014   div   代码   

原文地址:http://www.cnblogs.com/amunote/p/3945810.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!