Клубове Дир.бг
powered by diri.bg
търси в Клубове diri.bg Разширено търсене

Вход
Име
Парола

Клубове
Dir.bg
Взаимопомощ
Горещи теми
Компютри и Интернет
Контакти
Култура и изкуство
Мнения
Наука
Политика, Свят
Спорт
Техника
Градове
Религия и мистика
Фен клубове
Хоби, Развлечения
Общества
Я, архивите са живи
Клубове Дирене Регистрация Кой е тук Въпроси Списък Купувам / Продавам 04:01 30.06.24 
Компютри и Интернет
   >> Java
Всички теми Следваща тема *Кратък преглед

Страници по тази тема: 1 | 2 | >> (покажи всички)
Тема малко помощ?нови  
АвторjavaFen (Нерегистриран)
Публикувано05.06.06 13:47



Може ли малко помощ? Как да разбирам това? Какви преимущества има?
Kotka е superclass на Persijka:

Kotka kot = new Persijka();

Po kakvo gornoto serazli4ava ot:

Persijka kot = new Persijka();

Blagodarjq predvaritelno.



Тема Re: малко помощ?нови [re: javaFen]  
Автор DrmR (урод)
Публикувано05.06.06 13:52



забив:)

ами разликата е че при едното разглеждаш обекта като Котка, т.е. гледаш всички общи черти на котките. Когато го разглеждаш като Персийка, тогава към общите черти на котката имаш достъп и до чертите на Персийката.

Може би по-ясно ще бъде така:

Person you = new Employee()

означава че ти си служител, но в момента ни интересуваш единствено като човек.

Надявам се да съм бил полезен, въпреки че едва ли съм направил перфектното обяснение.



Тема Re: малко помощ?нови [re: DrmR]  
АвторjavaFen (Нерегистриран)
Публикувано05.06.06 14:09



Искаш да кажеш, че при
Kotka kот = new Persijka();
mакар че Обекта е тип Персийка, мога да разглеждам само methodite и променливите на класата Котка т.е. не мога да използвам специализираните methodi и променливи на класата Персийка, макар че тях ги има?



Тема Re: малко помощ? [re: javaFen]  
Автор eфp. Лyk (*)
Публикувано05.06.06 14:29



Според мен Дрмр само те обърка.

Няма никакво практическо значение дали отляво ще бъде котка или Персийка. Евентуално би си спестил някой каст който иначе би бил експлицитен, но нищо повече.



Тема Re: малко помощ?нови [re: eфp. Лyk]  
Авторjavafen (Нерегистриран)
Публикувано05.06.06 15:18



mersi!



Тема Re: малко помощ?нови [re: javaFen]  
Авторtoshe (Нерегистриран)
Публикувано05.06.06 22:16



Точно така.



Тема Re: малко помощ?нови [re: javaFen]  
АвторEroS (Нерегистриран)
Публикувано06.06.06 03:58



Разликата е и в тъй наречените early binding и late binding. Едното се прави от компилатора, а другото от ВМ. Доколкото се сещам двете имат някои разлики обаче:

1. Ако използваш "Persijka kot = new Persijka();" това може да ти спести по-нататък в програмата някой down casting, който най-вероятно компилатора ще иска да направиш. Що се отнася до upper casting-a - ой си се прави автоматично.
2. Ако използваш "Котка" при декларацията, и и двата класа имат методи с еднакъв подпис, то май ще бъде извикан този от КОТКА а не този от ПЕРСИИСКА, въпреки че реално обекта ти е "ПЕРСИЙСКА".

Мисля че това са основните разлики.

Надявам се, че бях полезен :-)



Тема Re: малко помощ?нови [re: EroS]  
Автор eфp. Лyk (*)
Публикувано06.06.06 06:41



В отговор на:


2. Ако използваш "Котка" при декларацията, и и двата класа имат методи с еднакъв подпис, то май ще бъде извикан този от КОТКА а не този от ПЕРСИИСКА, въпреки че реално обекта ти е "ПЕРСИЙСКА".




Я пак помисли, че вадя бележника и почвам да пиша 2-ки.



Тема Re: малко помощ?нови [re: eфp. Лyk]  
Авторnasko (Нерегистриран)
Публикувано07.06.06 13:06



Не бързай да пишеш двойки.

Пичът не го обясни съвсем правилно, но е прав. При overload-нати методи се гледа типът на референцията, не на самия обект.

Пример:

class A {}
class B extends A {}

void abc(A a) {...}
void abc(B b) {...}

A obj = new B();
abc(obj); // Ще се изпълни abc(A)



Тема Re: малко помощ?нови [re: nasko]  
Автор DrmR (урод)
Публикувано07.06.06 13:44



А дали пича е имал предвид overload на функции или оverride. Защото методи с еднакви signature са overriden, а не overloaded. Таке че ти си прав, но не и в този случай.




Страници по тази тема: 1 | 2 | >> (покажи всички)
Всички темиСледваща тема*Кратък преглед
Клуб :  


Clubs.dir.bg е форум за дискусии. Dir.bg не носи отговорност за съдържанието и достоверността на публикуваните в дискусиите материали.

Никаква част от съдържанието на тази страница не може да бъде репродуцирана, записвана или предавана под каквато и да е форма или по какъвто и да е повод без писменото съгласие на Dir.bg
За Забележки, коментари и предложения ползвайте формата за Обратна връзка | Мобилна версия | Потребителско споразумение
© 2006-2024 Dir.bg Всички права запазени.