|
Тема
|
psevdo abstraktni klasove?
|
|
Автор |
voyager (pathfinder) |
Публикувано | 08.07.02 14:26 |
|
Za6to slednoto se kompilira:
JFileChooser j=new JFileChooser();
j.setFileView(new FileView(){});
sled kato FileView e abstrakten klas? Poglednah dokumentaciqta i vidqh 4e vsy6tnost FileView e deklariran kato abstrakten, no nqma abstraktni metodi. Qvno zatova ne dava gre6ka. No za6to togava klasyt e abstrakten?
Nqkoi popadal li e na ne6to podobno i dokumentirano li e tova?
The things are awlays changing, I feel that it`s allright
| |
|
new FileView(){}
тоя ред ти създава анонимен (май така беше) клас, който наследява/реализира класа/интерфейса FileView.
| |
|
pri nasledqvane na abstrakten klas trqbva da se definirat abstraktnite metodi. A nai-strannoto e 4e za FileView ima dve razli4ni dokumentacii:
JavaTM 2 Platform
Standard Edition vsi4ki metodi sa dadeni kato abstraktni. T.e. az trqbva da gi realiziram, ako iskam nasledqva6tiq klas da ne byde abstrakten i sledovatelno da moje da se instancira. Sledovatelno new FileView(){} ne bi trqbvalo da se kompilira, vypreki 4e e vytre6en anonimen klas.
v JavaTM 2 Platform
Std. Ed. v1.4.1 pyk nito edin metod ne e daden kato abstrakten. Tuk izglejda vyzmojno da se instancira, no typoto e, 4e klasyt vse pak e deklariran kato abstrakten v dokumentaciqta!
music non stop
| |
Тема
|
Re: psevdo abstraktni klasove?
[re: voyager]
|
|
Автор | ruru (Нерегистриран) |
Публикувано | 08.07.02 17:39 |
|
new FileView(){}
Kompilira zaradi { }.Priema 4e predefinira6 klasa. Toi si e abstracten.
Triabva da se implantira za da se izpolzva.A kak se izpolzva moje6 da vidi6 v repertoira na tvoia jdk:
SDK/demo/jfc/FileChooserDemo/src
| |
Тема
|
Re: psevdo abstraktni klasove?
[re: ruru]
|
|
Автор |
voyager (pathfinder) |
Публикувано | 08.07.02 18:01 |
|
:( tva go gledah. Problema mi ne e v izpolzvaneto. To se kompilira i si raboti. Problemyt e 4isto teoreti4n - spored mene ne bi trqbvalo da e taka. Pi4ovete v primera na SDK sa raz6irili abstraktniq class i sa rezlizrali metodite mu. Sled tova instancirat raz6ireniq klas, koito ve4e ne e abstrakten. A az ne implementiram kiorav metod. vqrno, instanciram vytre6no ne samiqt FileView, a negov naslednik. Samo 4e sled kato nqsledqva6tiq klas ne definira abstraktnite metodi, toi sy6to e abstrakten. I ne moje da se instancira. Zatova new FileView(){} ne bi trqbvalo da se kompilira.
Edinstvenoto obqsnenie e, 4e avtomati4no se syzdavat prazni realizacii na abstraktnite metodi. No tova nikyde ne e dokumentirano :( Pone az ne sm go vijdal.
Taka de, sled tolkova prikazki, misylta mi e, 4e tyrsq teoreti4no obqsnenie na problema, koito mi se struva adski stranen...
дао дъ дзин
| |
|
защото няма абстрактни методи, затова успява да се компилира, т.е. не е необходимо да наследяваш каквото и да е - просто няма такива методи, които трябва да се наследят задължително.
В случая тоя клас (FileView) се отличава от нормалните класове единствено по това, че не може да се създават обекти от него.
Виж не знам каква е точно дефиницията на абстрактен клас в Java - в C++ абстрактен клас е клас, който има поне една pure-virtual функция (май така беше). В Java явно не е така (тук abstract може да обявиш самия клас). Сигурно дефиницията е, че не не можеш да създаваш обекти от тоя клас (не съм много сигурен).
| |
Тема
|
Re: psevdo abstraktni klasove?
[re: voyager]
|
|
Автор | vALE (Нерегистриран) |
Публикувано | 09.07.02 02:14 |
|
"Samo 4e sled kato nqsledqva6tiq klas ne definira abstraktnite metodi, toi sy6to e abstrakten." - tuk rabotata e takawa che naslediawashtia (w sluchaia anonimen klas) klas niama nujda da implementira nishto zashtoto metodite na FileView si imat defaultna implementacia. Sledowatelno anonimnia klas koito naslediawa tozi FileView ne e abstrakten i moje da se prawi instatiation.
cheers
| |
Тема
|
Re: psevdo abstraktni klasove?
[re: vALE]
|
|
Автор |
voyager (pathfinder) |
Публикувано | 09.07.02 10:03 |
|
ami da! Ti si prav vsy6tnost. Namerih otgovora v specifikaciqta na ezika:
"8.1.1.1 abstract Classes
An abstract class is a class that is incomplete, or to be considered incomplete"
Strannoto e vse pak, 4e nikyde ne e qsno dokumentirano, 4e edin class moje da byde deklariran kato abstrakten, bez v deistvitelno da e takyv /*t.e. da ima abstraktni metodi */.
10x na vsi4ki vse pak, izqsnihme vyprosa
"Така е то", казват тралфамадорците, когато някой умре
| |
|
|
|
|