Natkn��em si� na dziwn� sytuacj�. Mam klas� bazow� wyj�tku z kilkoma
konstruktorami:
public class ECTIBaseException extends Exception {
public ECTIBaseException(String string, CStatus status) {
super( string );
logException(status);
status.getErrors().add(this.getMessage());
}
public ECTIBaseException(CStatus status) {
super();
status.getErrors().add( this.getMessage());
}
public ECTIBaseException(String string) {
super( string );
logException(null);
}
}
Je�li utworz� klas� wyj�tku dziedzicz�c� po ECTIBaseException np:
public class ECTIcustomerIdentificationFailure extends ECTIBaseException {
public ECTIcustomerIdentificationFailure(CStatus status) {
super(status);
}
}
Jestem zmuszony ponownie zadeklarowaďż˝ konstruktor z tďż˝ samďż˝ sygnaturďż˝.
Dziwnie to wygl�da: redeklaracja konstruktora kt�ry jedynie wo�a super(.)
Gdzie jest b��d logiczny? Jest ju� dzi� troch� p�no i nie my�l�
efektywnie :)
--
pozdrawiam
Piotr
XLR250&bmw_f650_dakar
eeee, jest dopiero 19 ;)
Nie jesteďż˝ zmuszony do deklaracji takiego samego konstruktora ale do
wywo�ania jednego z konstruktor�w klasy bazowej w konstruktorze klasy
podrz�dnej np
public class Base {
public Base(String s){
}
}
public class Child extends Base{
public Child(){
super("TEKST");
}
}
pewnie ide Ci sugeruje takie rozwi�zanie pr�buj�c dopasowa� jakie�
konstruktory
> pewnie ide Ci sugeruje takie rozwi�zanie pr�buj�c dopasowa� jakie�
> konstruktory
W�a�nie, Eclipse podkre�la �e konstruktor w wyj�tku dziedzicz�cym nie
istnieje, to mnie dziwi, my�la�em �e dziedziczenie dotyczy zar�wno metod
jak i konstruktor�w. Rozumiem, gdyby w wyj�tku bazowym konstruktor nie
byďż˝ publiczny.
--
pozdrawiam
Piotr
XLR250&bmw_f650_dakar
Klasy nie dziedzicz� konstruktor�w.
zak�adam, �e podkre�la Ci wtedy jak w klasie dziedzicz�cej nie ma
�adnego konstruktora, wtedy zostanie do�o�ony domy�lny bezparametrowy
konstruktor, kt�ry b�dzie wywo�ywa� domy�lny bezparametrowy konstruktor
klasy bazowej tylko, �e go tam nie ma, bo zdefiniowa�e� szereg
konstruktor�w z parametrami, wi�c musisz zadeklarowa�, kt�ry ma zosta�
wywo�any,
http://java.sun.com/docs/books/tutorial/java/IandI/super.html
a tu odno�nie dziedziczenia konstruktor�w
http://java.sun.com/docs/books/tutorial/java/IandI/subclasses.html
"A subclass inherits all the members (fields, methods, and nested
classes) from its superclass. Constructors are not members, so they are
not inherited by subclasses, but the constructor of the superclass can
be invoked from the subclass."
> http://java.sun.com/docs/books/tutorial/java/IandI/subclasses.html
> "A subclass inherits all the members (fields, methods, and nested
> classes) from its superclass. Constructors are not members, so they are
> not inherited by subclasses, but the constructor of the superclass can
> be invoked from the subclass."
>
I wszystko sta�o si� jasne. Ciekawe dlaczego dziedziczenie nie
uwzgl�dnia konstruktor�w, na razie nie widz� uzasadnienia dla takiego
ograniczenia.
--
pozdrawiam
Piotr
XLR250&bmw_f650_dakar
> Tomek Łabuz pisze:
>
>> http://java.sun.com/docs/books/tutorial/java/IandI/subclasses.html
>> "A subclass inherits all the members (fields, methods, and nested
>> classes) from its superclass. Constructors are not members, so they are
>> not inherited by subclasses, but the constructor of the superclass can
>> be invoked from the subclass."
>>
>
> I wszystko stało się jasne. Ciekawe dlaczego dziedziczenie nie
> uwzględnia konstruktorów, na razie nie widzę uzasadnienia dla takiego
> ograniczenia.
>
A jak sobie to wyobrazasz?
Wezmy przyklad:
class A {
public A(int i) {}
}
public B extends A {
private final String bStr;
//jakie konstruktory maja byc odziedziczone
//i w jaki sposob maja sie zachowywac?
}
--
Michal
> A jak sobie to wyobrazasz?
>
> Wezmy przyklad:
>
> class A {
> public A(int i) {}
> }
>
> public B extends A {
> private final String bStr;
>
> //jakie konstruktory maja byc odziedziczone
> //i w jaki sposob maja sie zachowywac?
> }
Nie wiem zrozumiałem do czego zmierzasz. W powyższym przykładzie
chciałbym aby było możliwe:
B b = new B( 5 );
--
pozdrawiam
Piotr
XLR250&bmw_f650_dakar
> Michal Kleczek pisze:
>
>> A jak sobie to wyobrazasz?
>>
>> Wezmy przyklad:
>>
>> class A {
>> public A(int i) {}
>> }
>>
>> public B extends A {
>> private final String bStr;
>>
>> //jakie konstruktory maja byc odziedziczone
>> //i w jaki sposob maja sie zachowywac?
>> }
>
> Nie wiem zrozumiałem do czego zmierzasz. W powyższym przykładzie
> chciałbym aby było możliwe:
>
> B b = new B( 5 );
A jaka waroscia mialby byc zainicjowana wtedy skladowa bStr ?
--
Michal