Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Konstruktor wyjątku i dziedziczenie

34 views
Skip to first unread message

Piotr Rezmer

unread,
Dec 1, 2009, 12:44:13 PM12/1/09
to
Witam,

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

Tomek Łabuz

unread,
Dec 1, 2009, 1:07:43 PM12/1/09
to
Piotr Rezmer pisze:

>
> 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 :)

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

Piotr Rezmer

unread,
Dec 1, 2009, 1:22:43 PM12/1/09
to
Tomek �abuz pisze:

> 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

ruf10

unread,
Dec 1, 2009, 1:31:26 PM12/1/09
to
Piotr Rezmer pisze:

> Tomek �abuz pisze:
>
>> 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.
>

Klasy nie dziedzicz� konstruktor�w.

Tomek Łabuz

unread,
Dec 1, 2009, 1:35:21 PM12/1/09
to
Piotr Rezmer pisze:

> Tomek �abuz pisze:
>
>> 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

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."

Piotr Rezmer

unread,
Dec 1, 2009, 1:38:35 PM12/1/09
to
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.

--
pozdrawiam
Piotr
XLR250&bmw_f650_dakar

Michal Kleczek

unread,
Dec 1, 2009, 3:54:44 PM12/1/09
to
Piotr Rezmer wrote:

> 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

Piotr Rezmer

unread,
Dec 2, 2009, 1:49:11 AM12/2/09
to
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 );

--
pozdrawiam
Piotr
XLR250&bmw_f650_dakar

Michal Kleczek

unread,
Dec 2, 2009, 3:43:10 AM12/2/09
to
Piotr Rezmer wrote:

> 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

0 new messages