наследования является « является «отношением». Давайте использовать пример собака/животное:
public class Animal {
public void run() {
// ...
}
}
public class Dog extends Animal {
public void bark() {
// ...
}
}
Собака это животное, так что они справедливы:
Animal animal = new Dog();
Dog dog = new Dog();
Таким образом, все эти вызовы справедливы:
animal.run();
dog.run();
dog.bark();
Однако тип animal
есть Animal
, который не имеет bark()
способ. Собака - это животное, но вы называете это животным, а не собакой, поэтому вы не знаете, что она может лаять. Например, animal
может быть кошкой. Это означает, что этот призыв будет давать ошибку компиляции:
animal.bark(); // compile-time error, no such method in class Animal
Таким образом, в вашем примере, Obj
и Ob
являются только ссылки на некоторые объекты. Оба объекта создаются точно так же, единственное различие заключается в том, как вы относитесь к ним.
Я рекомендую делать некоторое чтение о наследовании, вы можете начать here
1. Не могли бы вы исправить форматирование? 2. Вы спрашиваете, в чем разница между расширением другого класса и наличием класса без наследования? –
Мое сомнение заключается в том, что 1. использование класса child для объекта класса патентов [Overload Ob = Overload_1();] – Mageshwaran