🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.lang.java
Article #153940

Re: Zagadnienie polimorfizmu?

#153940
From: Arivald
Date: Thu, 12 Dec 2013 12:23
69 lines
2635 bytes
W dniu 2013-12-12 12:00, Jadalbert pisze:
> Jak to właściwie jest. Mam klasę abstrakcyjną (dodam, że rzecz ma się dziać w jsf - co to zmienia, nie wiem)
>

public interface FiguraZPolem {
      public double getPole()
}

> public abstract class Figura implements FiguraZPolem {
> 	public Figura(){}
>
> 	private double pole;
>
         @Override
> 	public double getPole() {
> 		return pole;
> 	}
> }
>
> i klasę
>

public interface FiguraZObwodem {
      public double getObwod()
}

> public class Kolo extends Figura implements FiguraZObwodem {
> 	public Kolo(){}
>
> 	private double obwod;
>
         @Override
> 	public double getObwod() {
> 		return obwod;
> 	}
> }
>
> i teraz:
> public class Licz {
> 	private Figura figura;
> 	private double PoleObwod;
>
> 	public Licz() {}
>
> 	public Licz(Figura figura) {
> 		this.figura = figura;
> 	}
>
> 	public double getPoleObwod() {
		if (!figura instanceof FiguraZObwodem)
                      throw new InvalidParameterException("oczekiwano 
FiguraZObwodem");
		if (!figura instanceof FiguraZPolem )
                      throw new InvalidParameterException("oczekiwano 
FiguraZPolem ");

> 		return ((FiguraZPolem ) figura).getPole() * ((FiguraZObwodem) figura).getObwod();
> // i tu oczywiście błąd bo obwodu nie ma w klasie Figura !
> 	}
> }
>
> w "realu" będzie więcej klas jak Kolo i każda nie dość, że będzie pokrywała metody klasy bazowej to jeszcze będzie miała własne, dodatkowe. I skąd wziąć wiedzę, jakiej klasy jest to co przychodzi w konstruktorze?
>

Po za tym Figura tez może być interfejsem, pustym. Da ci to możliwość 
posiadanie kilku hierarchii dziedziczenia figur.

-- 
Arivald
Technical Details
Message-ID: <l8c9r8$ddk$1@news.dialog.net.pl>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed.pionier.net.pl!news.dialog.net.pl!not-for-mail
References: <e8a6173d-2e5d-4055-9877-1bc8fa939deb@googlegroups.com>

Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed.pionier.net.pl!news.dialog.net.pl!not-for-mail
From: Arivald <arivald_@AT_interia_DOT_.pl>
Newsgroups: pl.comp.lang.java
Subject: Re: Zagadnienie polimorfizmu?
Date: Thu, 12 Dec 2013 13:23:10 +0100
Organization: Dialog Net
Lines: 70
Message-ID: <l8c9r8$ddk$1@news.dialog.net.pl>
References: <e8a6173d-2e5d-4055-9877-1bc8fa939deb@googlegroups.com>
NNTP-Posting-Host: 62.87.249.67
Mime-Version: 1.0
X-Trace: news.dialog.net.pl 1386850984 13748 62.87.249.67 (12 Dec 2013 12:23:04 GMT)
X-Complaints-To: abuse@dialog.net.pl
NNTP-Posting-Date: Thu, 12 Dec 2013 12:23:04 +0000 (UTC)
User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64; rv:24.0) Gecko/20100101 Thunderbird/24.2.0
In-Reply-To: <e8a6173d-2e5d-4055-9877-1bc8fa939deb@googlegroups.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit