多态:如何理解Person ming = new Person();

Person ming = new Person();

注意区分Person ming是定义Person类型的变量ming,而new Person()是创建Person实例(对象)。

而对于如下情况:

Object o = new person;
Object o  = new Student();

Object类型的变量o,可以指向person类型的对象,也可以指向student类型的对象。
Object是父类,person、Student为子类。

(一个引用类型变量可能指向(引用)多种不同类型的对象)

public class Main {
    
    
    public static void main(String[] args) {
    
    
        Person p = new Student();
        p.run(); // 应该打印Person.run还是Student.run?
    }
}

class Person {
    
    
    public void run() {
    
    
        System.out.println("Person.run");
    }
}

class Student extends Person {
    
    
    @Override
    public void run() {
    
    
        System.out.println("Student.run");
    }
}

猜你喜欢

转载自blog.csdn.net/Mr_zhang66/article/details/112430772