2017-02-19 3 views
-1

Скажем, у меня есть кусок кода:Каково значение предоставления конструктора дочернего класса объекту родительского класса?

class one 
{ 
    String one = "First"; 
} 
class sec extends one 
{ 
    String sec = "Second"; 
} 
class num 
{ 
    public static void main(String[] args) 
    { 
    one o = new one(); 
    sec s = new sec(); 
    one oo = new sec(); 

    // the object will be of that class for which we are providing the reference 

    // then what is the use of the constructor 

    sec s = new one(); // this is not working 

    System.out.println(o.one); 
    System.out.println(s.sec); 
    System.out.println(oo.one); # this seems right 
    System.out.println(oo.sec); # this is not working 

    } 
} 

Я смущен ссылки и конструктору при создании объекта. Я расширил класс sec для наследования класса one. У меня есть смысл создания первых двух объектов, которые мы ссылаемся на класс one и создаем тот же объект для второго объекта.

Но как насчет третьего объекта? Мы используем ссылку первого класса и предоставляем конструктор дочернего класса, и я могу использовать третий объект (оо) только для ссылки на переменную и методы одного класса, а не второго класса.

Если мне нужно использовать методы и переменные одного класса, то я могу использовать его с объектом (o), а не с объектом (oo). Так в чем же разница между обоими объектами, когда они ведут себя как друг друга?

one o = new one(); 
one oo = new sec(); 

Я хочу знать разницу между этими двумя, что каковы изменения происходят, когда мы используем конструктор дочернего класса, а не базовый класс.

+0

Хорошо, я посмотрю, спасибо, сэр :-) – babygame0ver

+0

Определенно, взгляните на полиморфизм. Также это не JAVA. Это будет полезно для любого ООП. – Tom

+0

@AkshaySingh Ищите все будущие вопросы на сайте перед публикацией нового вопроса. Скорее всего, на ваш вопрос, возможно, уже был дан ответ. – CKing

ответ

0

Это на самом деле одна из знаменитых тем обсуждения.

Прежде всего, существует две вещи, известные как object & reference.

Объект означает ваше фактическое изображение или фактические данные.

Ссылка означает ваш взгляд на объект.

С точки зрения базы данных, вы можете сравнить объект как таблицу & ссылку как вид.

Предположим, у нас есть трехмерный тип цилиндра, когда вы видите его сверху, он просто похож на круг & спереди он выглядит как квадрат (здесь я говорю об идентичных условиях), но это ни на самом деле ни круг, ни квадрат ,

Настоящий объект представляет собой ваш цилиндр & Изображения, которые вы получаете от просмотра под разными углами, являются вашей ссылкой.

Теперь вернитесь к актуальному вопросу.

Когда вы пишете one o = new one(), это фактический объект объекта, на который ссылается (рассматривается) как единое целое.

Теперь, когда вы пишете one po = new two(), это фактический объект двух, на который ссылаются два. Здесь есть все компоненты объекта, которые определены во втором классе. хотя вы не можете получить к ним доступ из-за типа ссылки, но они существуют.

Знаю Фактический разницу Позвольте дискуссию о том, что происходит, когда вы пишете код примерно так.

two t=(two)o или two tt=(two)oo

В первом случае Java бросает исключение ClassCastException.Во втором случае вам разрешено.

Во втором случае ваш объект oo имеет тип two, здесь класс два наследуют свойства класса one, так что вы можете рассматривать его как объект класса one. Но в первом случае вы не можете по той же причине.

Основная причина этого заключается в том, что мы не заботимся обо всех свойствах объектов, когда имеем дело с ними.

Например, если вам необходимо разработать код для отправки почты в список некоторых лиц. Теперь подумайте, что вам действительно нужно для выполнения этой задачи? Только адрес электронной почты. На самом деле вам не нужны другие детали, которые, очевидно, существуют в объекте людей. Теперь вы определяете один класс, называемый как Email с помощью метода getEmail (на самом деле это должен быть интерфейс) & вы создаете ограничения, которые каждый человек должен будет расширить этот класс сейчас каждый объект человека содержит адрес электронной почты, хотя он может содержать другие свойства, но вам это не нужно.

Смежные вопросы