Witam,
Jestem dosyć początkującym programistą :D I tak pomyślałem, że może zadam tutaj pytanie nad którym zastanawiam się tak od pewnego czasu. A mianowicie - Jak mogę wykorzystać metody w klasach potomnych, jeśli te metody nie istnieją np w Interfejsie przez który tworze obiekty tych klas stosując zalety polimorfizmu.
Tutaj mam przykładowy kod który napisałem. I moje pytanie do tego kodu jest następujące. Po co tworzyć np. dodatkowe metody w klasach potomnych jeśli i tak nie mogę ich użyć. np. metoda "byleJaka()" w klasie Tort. A jeśli nie mogę ich użyc to po co tworzyć nowe klasy, które w sumie w tedy za dużo nie wnoszą.
Mój kod:
package pl.czaspoczasie.pakiet;
public class Prepare1 {
public static void main(String[] args) {
Wypiek w1 = new Tort("czekoladowy",(byte)12);
System.out.println("Tort: " + w1.nazwa());
w1 = new PolewaDoTortu(w1,"truskowakowy");
System.out.println("Tort: " + w1.nazwa());
w1.byleJaka(); ///BLAD NIE MA TAKIEJ METODY
}
}
interface Wypiek{
double cena();
String nazwa();
}
class Tort implements Wypiek{
protected String nazwa;
protected String smak;
protected double cena;
protected byte iloscSwieczek;
public Tort(String smak, byte iloscSwieczek){
nazwa = "Tort";
this.smak = smak;
this.iloscSwieczek = iloscSwieczek;
cena = 29.99;
}
@Override
public double cena(){
return cena;
}
@Override
public String nazwa(){
return nazwa+"\n\n Smak: "+smak+"\n ilosc swieczek: "+iloscSwieczek;
}
public void byleJaka(){
System.out.pritnln("Byle jaka");
}
}
class PolewaDoTortu implements Wypiek{
private Wypiek w;
private String smak;
public PolewaDoTortu(Wypiek w, String smak){
this.w = w;
this.smak = smak;
}
@Override
public double cena() {
return w.cena()+5;
}
@Override
public String nazwa() {
return w.nazwa()+"\n Polewa: "+smak;
}
void zablysk(){
System.out.println("Blysku! Blysku!");
}
}
class NapisDoTortu implements Wypiek{
private Wypiek w;
private String napis;
public NapisDoTortu(Wypiek w, String napis){
this.w = w;
this.napis = napis;
}
@Override
public double cena() {
return w.cena()+3;
}
@Override
public String nazwa() {
return w.nazwa()+"\n Napis: "+napis;
}
void wybuchnij(){
System.out.println("Bach! Bach! Sto Lat!");
}
}