怎么用接口的引用调用实现类中重写的方法,谢谢求解啦?

public class Teacher {
	private static Person per;
	public static void main(String[] args) {
		per.show();//输出的空指针异常
		     //怎么用接口的引用调用实现类中重写的方法
	}
}
interface Person {
	public abstract void show();
}
class Student implements Person{
	
	@Override
	public void show() {
		System.out.println("你好");
	}	
}

怎么用接口的引用调用实现类中重写的方法,是不是无法调用啊

public class Teacher {
	private static Person per;
	public static void main(String[] args) {
		Person person=new Student();
		person.show();
		
	}
}
interface Person {
	public abstract void show();
}
class Student implements Person{
	
	@Override
	public void show() {
		System.out.println("你好");
	}	
}

Perso怎么用接口的引用调用实现类中重写的方法:

兄弟加入这条语句

Person person=new Student();
 person.show();

Person作为接口被引用,而实际对象是new Student(),通过 对象.方法名(),实现重写

就通俗一点,突然想到的,不知道听不听的懂哈

你爸爸(爸爸比喻为接口)有一件东西(东西比喻为方法)--即接口中的方法,别人来到家门口需要借它来用一用,但是你爸现在不在家也没空(接口,不可以直接创建类调用,只能通过实现类对象调用),但是你(你比喻为实现类)知道那东西在那里,所以只能由你来拿(拿比喻为调用)那件东西给别人.

大佬看到了觉得我说的不行或者误人子弟的,说我一下哈,秒删

public class Teacher {
    private static Person per;
    public static void main(String[] args) {
        per = new Student();
        per.show();
    }
}

要将实现类对象赋给接口的引用,多态的概念,编译时会以实现类为模板创建对象,赋值给Person类型的变量per后就能够使用per来调用实现类Student的方法了