Это в основном то же самое, но разница в том, что:
1- В первом объявлении:
Person student = new Employee("Dove","Female",0);
Здесь student
не может получить доступ Employee
для определенного классаmethods
или attributes
, поскольку это Person
объект, который содержит Employee
экземпляр.
2- Но во втором:
Employee student = new Employee("Dove","Female",0);
Здесь student
можетиспользуйте атрибуты и методы Employee
и Person
.
Пожалуйста, проверьте Полиморфизм Oracle Docs для дальнейшего чтения о полиморфизме в Java
.
Пример:
Мы можем видеть это в этом примере, где мы используем Integer
и Object
классы:
Integer i1= new Integer(0);
//This will run and execute perfectly
System.out.println(i1.intValue());
Object i2= new Integer(0);
//This will throw an error as `Object` class doesn't have `intValue()` method.
System.out.println(i2.intValue());
Это живой рабочий демо , так что вы можете видеть это.