最近被一个问题困扰就是关于JAVA的多态,
子类继承父类,而且子类重写父类方法,再加上子类以父类的身份出现就是多态。可是为什么把子类向上转型为父类的时候,父类可以访问子类的重写的方法?而不是父类本来的方法?我知道多态有个叫动态绑定,可具体动态绑定的机制是什么原理是什么?请高手指点。
例如测试下面方法如下:
class Person{
public void run(){
System.out.println("人跑");
}
}
class Student extends Person{
public void run(){
System.out.println("学生跑");
}
}
public class Test {
public static void main(String[] args) {
// TODO Auto-generated method stub
Person p=new Student();
p.run();
}
}
}
虽然说是多态会调用子类的方法,可我就是不懂为什么会调用子类了,请高手指点下?谢谢了
子类继承父类,而且子类重写父类方法,再加上子类以父类的身份出现就是多态。可是为什么把子类向上转型为父类的时候,父类可以访问子类的重写的方法?而不是父类本来的方法?我知道多态有个叫动态绑定,可具体动态绑定的机制是什么原理是什么?请高手指点。
例如测试下面方法如下:
class Person{
public void run(){
System.out.println("人跑");
}
}
class Student extends Person{
public void run(){
System.out.println("学生跑");
}
}
public class Test {
public static void main(String[] args) {
// TODO Auto-generated method stub
Person p=new Student();
p.run();
}
}
}
虽然说是多态会调用子类的方法,可我就是不懂为什么会调用子类了,请高手指点下?谢谢了