Inne działy

Java przykładowe programy

 

Java i dziedziczenie

 

Innym ważnym pojęciem w programowaniu obiektowym jest dziedziczenie. Wyjaśnienie czym jest dziedziczenie stanie się jaśniejsze na konkretnych przykładach programowania. Ale przede wszystkim, jest jedna klasa jako klasa nadrzędna (o nazwie super klasa) i inna klasa jako element potomny obiektu nadrzędnego (podklasa). Klasa podrzędna jest uważana za pochodzącą od klasy nadrzędnej. Powód aby mieć klasy potomne, jest jednak, aby zachować informacje oddzielnie. Klasa potomna może dziedziczyć wszystkie metody i pola ze swojej klasy nadrzędnej, ale zawiera także swoje własne metody i pola.

Jako przykład dziedziczenia tworzymy sub klasę, która obsługuje Informacje o certyfikatach. Jeśli student dostaje stopień "A", przyznamy certyfikat doskonałości; Jeśli student dostaje ocenę "B" lub "C" przyznamy certyfikat osiągnięcia. Dla innych ocen certyfikat nie zostanie przyznany. Zadaniem klasy potomnej jest przechowywanie danych o certyfikatach i oddzielenie ich od danych egzaminu. Jednak wciąż chcemy mieć dostęp do niektórych informacji na temat egzaminu. Mamy nawet dostęp do metod, które przypisują wynik i ocenę.

Utwórz nową klasę klikając File > New File  w menu NetBeans. Gdy zostanie wyświetlone okno dialogowe, wybierz opcję Java w oknie kategorii i Java Class w oknie typy plików. Kliknij przycisk Next i wprowadź Certyfikaty jako nazwę nowej klasy. Kliknij przycisk Finish.

Podczas tworzenia nowej klasy, Dodaj pole private String o nazwie certyfikat. Nowa klasa powinna wyglądać tak:

 

package szczegolyegzaminu;


public class Certyfikaty {
    
    private String certyfikat;
    
}

Aby utworzyć klasę potomną (dziecko) z super klasy Java (rodzic), używa się słowa kluczowego extends. Następnie po słowie "extends" nazwę klasy nadrzędnej, którą chcesz rozszerzyć. Chcemy stworzyć klasę potomną z klasy WynikiStudentow. Klasa WynikiStudentow będzie super klasą a klasa certyfikaty będzie klasą potomną.

Po "public class Certyfikaty" w kodzie dodaj "extends WynikiStudentow". Kod powinien wyglądać tak:

 

package szczegolyegzaminu;


public class Certyfikaty extends WynikiStudentow {
    
    private String certyfikat;
    
}

Stworzyliśmy klasę, która dziedziczy kod z klasy WynikiStudentow.

Podobnie jak w klasie WynikiStudentow możemy stworzyć konstruktor dla nowej klasy o nazwie Certyfikaty. Gdy tworzymy obiekt z klasy, Java w pierwszej kolejności będzie przede wszystkim wywoływać konstruktor.

Jednak może być wywołany tylko jeden konstruktor. Jeśli wywołujemy konstruktor z klasy Certyfikaty wszystkie domyślne wartości, które umieściliśmy w polach klasy WynikiStudentow nie zostaną wywołane. Aby obejść ten problem, używamy słowa kluczowego o nazwie super. To sprawia, że możemy wywołać konstruktora z super klasy. Dodaj następujący Konstruktor do klasy Certyfikaty.

 

package szczegolyegzaminu;


public class Certyfikaty extends WynikiStudentow {
    
    private String certyfikat;

    Certyfikaty(){
        super();
        certyfikat = "Certyfikat nie przyznany";
    }   
}

Nazwa konstruktora jest taka sama jak nazwa klasy: certyfikaty. Pierwszy wiersz kodu w nawiasach klamrowych jest super połączenie (Uwaga rundy w nawiasie po super). Gdy linia ta wykonuje, będzie zestaw wszystkie pola domyślne ustawiamy w StudentResults.

Drugi wiersz kodu w Konstruktorze ustawia domyślną wartość dla pola o nazwie certyfikat. (Faktycznie można ustawić więcej niż jeden Konstruktor. Zobaczysz jak to zrobić w dalszej części.)

Do przetestowania nowej klasy, wrócić do klasy SzczegolyEgzaminu, jedenej z główną metodą Main. Szybkim sposobem na to aby cały kod uczynić komentarzem jest aby zaznaczyć cały kod, a następnie kliknąć ikonę komentarza na pasku NetBeans:

 

java klasy

 

Aby pozbyć się komentarzy, zaznacz kod ponownie, a następnie kliknij ikonę odkomentuj.

Dodaj następujący wiersz, aby utworzyć nowy obiekt z klasy:

Certyfikaty c1 = new Certyfikaty();

Okno z kodem powinno wyglądać tak:

 

package szczegolyegzaminu;


public class SzczegolyEgzaminu {

    
    public static void main(String[] args) {
        
//        WynikiStudentow aStudent = new WynikiStudentow();
//        
//        String sNazwa = aStudent.pelnaNazwa("Bill Gates");
//        String egzamin = aStudent.nazwaEgzaminu("VB");
//        String wynik = aStudent.wynikEgzaminu(30);
//        String stopien = aStudent.egzaminStopien(30);
//        
//        System.out.println(sNazwa);
//        System.out.println(egzamin);
//        System.out.println(wynik);
//        System.out.println(stopien);
          
        Certyfikaty c1 = new Certyfikaty();
    }    
}

Nazwą obiektu jest po prostu c1. Typ obiektu jest obiektem Certyfikaty.

Aby sprawdzić, że można uzyskać dostęp do metod z klasy WynikiStudentow, należy dodać wiersz poniżej, który tworzy nowy obiekt c1:

String egzamin = c1.nazwaEgzaminu("VB");

To jest dokładnie taki sam kod jak przedtem: wywołujemy metodę o nazwie nazwaEgzaminu z klasy WynikiStudentow. Tym razem jednak używasz, obiektu Certyfikaty zamiast obiektu WynikiStudentow.

Dodaj linię wydruku i kod powinien wyglądać jak poniżej:

 

package szczegolyegzaminu;


public class SzczegolyEgzaminu {

    
    public static void main(String[] args) {
        
//        WynikiStudentow aStudent = new WynikiStudentow();
//        
//        String sNazwa = aStudent.pelnaNazwa("Bill Gates");
//        String egzamin = aStudent.nazwaEgzaminu("VB");
//        String wynik = aStudent.wynikEgzaminu(30);
//        String stopien = aStudent.egzaminStopien(30);
//        
//        System.out.println(sNazwa);
//        System.out.println(egzamin);
//        System.out.println(wynik);
//        System.out.println(stopien);
          
        Certyfikaty c1 = new Certyfikaty();
        
        String egzamin = c1.nazwaEgzaminu("VB");
        System.out.println(egzamin);
    }    
}

Uruchom program i zobacz wynik w oknie Output:

 

run:
Visual Basic .NET
BUILD SUCCESSFUL (total time: 0 seconds)

Więc do akcji została wywołana metoda z klasy nadrzędnej (super klasy). Teraz możemy dodać metodę do klasy potomnej (podklasa). Do klasy Certyfikaty, tuż poniżej konstruktora można dodać poniższą metodę:

 

package szczegolyegzaminu;


public class Certyfikaty extends WynikiStudentow {
    
    private String certyfikat;

    Certyfikaty(){
        super();
        certyfikat = "Certyfikat nie przyznany";
    }   
    
    String certyfikatPrzyznanie(int aWynik){
        
        String aStopien = egzaminStopien(aWynik);
        
        if (aStopien.equals("Ocena wynosi A")){
            this.certyfikat = "Certyfikat Doskonały";
        }else if(aStopien.equals("Ocena wynosi B")){
            this.certyfikat = "Certyfikat Osiągnięcie";
        }else if(aStopien.equals("Ocena wynosi C")){
            this.certyfikat = "Certyfikat Osiągnięcie";
        }else{
            this.certyfikat = "Certyfikatu nie przyznano";
        }
        
        return this.certyfikat;
    }    
}

Metoda nazywa się certyfikatPrzyznanie i zwraca wartość typu string (ciąg tekstowy). W nawiasach metody przekazujemy wynik egzaminu.

Poniżej pierwszy wiersz metody:

String aStopien = egzaminStopien(aWynik);

Metoda egzaminStopien jest metodą w klasie nadrzędnej. To jest metoda, którą utworzyliśmy w klasie WynikiStudentow. Ta metoda, pamiętaj, została utworzona aby zwrócić stopień egzaminu i przypisać do stopnia odpowiednie oznaczenie jak, "Stopień to A", "Stopień to B", itp. Teraz wywołujemy ją z klasy potomnej. Instrukcja IF sprawdza wartość ciągu aStopien, aby sprawdzić zawartość zmiennej. W zależności od wartości zwracany jest ciąg tekstowy, przyznający określony certyfikat: doskonałości, osiągnięcia lub nie przyznaje certyfikatu.

Powróć do klasy SzczegolyEgzaminu i dodaj poniższy kod:

String wyroznienie = c1.certyfikatPrzyznanie(50);

Linia ta wywołuje nową metodę i przekazuje wartość 50. Wynik jest zwracany jako ciąg tekstowy z nazwą naszego wyróżnienia.

Dodaj linię wyświetlającą nasz wynik:

System.out.println(egzamin + " " + wyroznienie);

Klasa SzczegolyEgzaminu powinna wyglądać tak jak poniżej (usunęliśmy wszystkie komentarze):

 

package szczegolyegzaminu;


public class SzczegolyEgzaminu {

    
    public static void main(String[] args) {
        
          
        Certyfikaty c1 = new Certyfikaty();
        
        String egzamin = c1.nazwaEgzaminu("VB");
        String wyroznienie = c1.certyfikatPrzyznanie(50);
        
        System.out.println(egzamin + " " + wyroznienie);
    }    
}

A oto dane wyjściowe w oknie Output po uruchomieniu programu:

 

run:
Visual Basic .NET Certyfikat Doskonały
BUILD SUCCESSFUL (total time: 0 seconds)

Wykorzystaliśmy dziedziczenie, aby odzielić dane egzaminu od danych certyfikatu. Klasa potomaj (sub) ma dostęp do metod klasy nadrzędnej (super). Mogliśmy wówczas połączyć dane wyjściowe z obu klas.

Dziedziczenie jest zatem zwiększeniem (rozszerzeniem) przydatności klasy nadrzędnej. Możemy zachować oddzielnie dane poprzez umieszczenie ich w klasie potomnej. Jednak klasa potomna jest związana z klasą nadrzędną i może uzyskać dostęp do niektórych lub wszystkich części kodu. Jednak jak dzieci na całym świecie, robi także swoje własne rzeczy!

W następnej sekcji, dowiesz się jak obsługiwać błędy w Java.

 

Zobacz nasze wszystkie kursy

WWW


HTML
HTML - Znaczniki
CSS - Tutorial
CSS - Selektory
PHP
JavaScript

XML

XSLT

Bazy danych


SQL
SQLite
MySQL
PostgreSQL

 

 

Programowanie


C
C++
C#
Java
VisualBasic
Python

Linux


Podstawy Linuxa
Bash
Linuks artykuły

Windows


Excel funkcje
Windows wskazówki
Outlook

Pozotałe działy


Programy
Rozrywka

 

 

 

This email address is being protected from spambots. You need JavaScript enabled to view it.