Dziedziczenie - przykładowy kod
workshop: #20-cls-inh.html
Zasoby lekcji
Dziedziczenie i polimorfizm
Przygotowanie
- Zapoznanie się z dokumentem: Informacje nt. Dziedziczenia i polimorfizmu
- Przygotowanie katalogu roboczego, np.
20-cls-inh
- Przeczytanie zadania oraz dodatkowych informacji
public class Baza extends Object
{ // każda klasa dziedziczy (niejawnie) z Object,
// więc nie ma potrzeby pisania: extends Object
protected String atrybut1 = "Pierwsza klasa";
protected boolean atrybut2 = false;
public int atrybut3 = 1;
public void drukuj(){
String out = "attr1: "+atrybut1;
out+= "\r\n"+"attr3: "+atrybut3;
System.out.println(out);
}
}
public class Potomna extends Baza
{ // dzięki dziedziczeniu z klasy Baza nie ma potrzby
// ponownej deklaracji atrybutów:
// protected String atrybut1 = "Pierwsza klasa";
// protected boolean atrybut2 = false;
// public int atrybut3 = 1;
// i metod:
// public void drukuj(){}
public String nieDrukuj(){
String out = "attr1: "+atrybut1;
out+= "\r\n"+"attr3: "+atrybut3;
return out;
}
}
Klasa główna programu
public class Main {
public static void main( String[] args)
{
Baza b = new Baza();
// metody getClass() i toString() są dziedziczone z klasy Object
System.out.println(b.getClass().getSimpleName());
System.out.println(b.toString());
Potomna p = new Potomna();
System.out.println(p.getClass().getSimpleName());
System.out.println(p.nieDrukuj());
p.drukuj(); // jest odziedziczona z klasy Baza
}
}
import java.util.ArrayList;
public class Demo
{ // Przykład Polimorfizmu, czyli wielopostaciowości
public static void main( String[] args)
{
String s = new String("To jest przkyład");
Object o = new String("To jest polimorfizm");
System.out.println(s);
System.out.println(o);
ArrayList<String> as = new ArrayList<String>();
ArrayList<Object> a = new ArrayList<Object>();
as.add(s);
// zakomentuj as.add(o);, aby uruchomić program
//as.add(o); // bez polimorfizmu nie da się umieścić w tablicy AS
// obiektu innego typu niż String
a.add(s);
a.add(o);
System.out.println("Długość tablicy a[]: "+a.size());
System.out.println("Długość tablicy as[]: "+as.size());
}
}
#1 [do kodu 2] Zaimplementuj tablicę wraz z pętlą, których referencje będą typów ogólnych, a dane typów szczegółowych.
#2 [utrwalające] Zaimplementuj dwie klasy przechowujące infromacje nt Projektów: Free oraz dziedzicącą z niej Full zgodnie z diagramem UML CD
#3 Uzupełnij klasę Free o metodę wyświetlającą informacje o Projekcie oraz klasę Full o podobną metodę z pełnymi informacjami.