关于java的一个小问题

Student student = new Student();
前面的Student和后面的Student有什么区别吗?作用有什么不一样?
Teacher student = new Student();
前面的类名和后面的类名不一样,但是也可以成功new出来,请问这是为什么?

Student student中的Student是类名,在这里表示student变量的类型。与intString的作用一样。
new Student()中的Student是构造方法名,构造方法名一定与类名相同。
前面的类名和后面的类名不一样,但是也可以成功new出来,这是因为这两个类名表示的类有父子继承(实现)关系,比如有extendsimplements关键字在类名后面。

说来话长,你学习继承了吗,多态学了吗