Inicjalizacja i sprz tanie
This presentation is the property of its rightful owner.
Sponsored Links
1 / 23

Inicjalizacja i sprzątanie PowerPoint PPT Presentation


  • 95 Views
  • Uploaded on
  • Presentation posted in: General

Inicjalizacja i sprzątanie. Wykonał: Marcin Ganczarek 140544. Plan. Gwarantowana inicjalizacja przez konstruktor Przeciążanie metod Sprzątanie: finalizacja i odśmiecanie pamięci Inicjalizacja składowych Inicjalizacja tablic. Plan. Gwarantowana inicjalizacja przez konstruktor

Download Presentation

Inicjalizacja i sprzątanie

An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


Inicjalizacja i sprz tanie

Inicjalizacja i sprzątanie

Wykonał:

Marcin Ganczarek 140544


Inicjalizacja i sprz tanie

Plan

  • Gwarantowana inicjalizacja przez konstruktor

  • Przeciążanie metod

  • Sprzątanie: finalizacja i odśmiecanie pamięci

  • Inicjalizacja składowych

  • Inicjalizacja tablic


Inicjalizacja i sprz tanie

Plan

  • Gwarantowana inicjalizacja przez konstruktor

  • Przeciążanie metod

  • Sprzątanie: finalizacja i odśmiecanie pamięci

  • Inicjalizacja składowych

  • Inicjalizacja tablic


Gwarantowana inicjalizacja przez konstruktor

Gwarantowana inicjalizacja przez konstruktor

  • W Javie pojęcia tworzenia i inicjalizacji obiektu połączono

  • Do tworzenia i inicjalizacji obiektu służy specjalna metoda nazwana konstruktorem

  • Konstruktor nie zwraca żadnej wartości i nie można tego zmienić

  • Jeżeli napiszemy klasę bez konstruktora to kompilator automatycznie utworzy konstruktor domyślny za nas

  • Konstruktor domyślny to konstruktor nie pobierający żadnych argumentów


Gwarantowana inicjalizacja przez konstruktor1

1. Konstruktor bez argumentów

class Ala

{

Ala()

{

System.out.println(”Ala ma kota”);

}

}

2. Konstruktor z argumentami

class Ola

{

Ola (int i)

{

System.out.println(”Ola ma” + i + ”kotów”);

}

}

Gwarantowana inicjalizacja przez konstruktor

Proste przykłady klas z konstruktorem


Inicjalizacja i sprz tanie

Plan

  • Gwarantowana inicjalizacja przez konstruktor

  • Przeciążanie metod

  • Sprzątanie: finalizacja i odśmiecanie pamięci

  • Inicjalizacja składowych

  • Inicjalizacja tablic


Przeci anie metod

Przeciążanie metod

class Drzewo {

int wysokość;

Drzewo() {

System.out.println(”Zasadzenie ziarna”);

wysokość = 0;

}

Drzewo(int i) {

System.out.println(”Stworzenie drzewa o wysokości ” + i + ”metrów”);

wysokość = i;

}

void info() {

System.out.println(”Wysokość drzewa to ” + wysokość + ”metrów”);

}

void info(String s) {

System.out.println(s + ”: Wysokość drzewa to ” + wysokość + ”metrów”);

}

}

Przykład klasy z przeciążonymi metodami


Przeci anie metod1

Przeciążanie metod

  • Każda przeciążona metoda musi posiadać unikatową listę typów argumentów

  • Nie można użyć typu wartości zwracanej do odróżnienia metod przeciążonych

  • Różnica w kolejności argumentów jest wystarczająca, aby odróżnić dwie metody

class Student {

Student(String s, int i) {

System.out.println(s + ” otrzymał ocenę ” + i);

}

Student(int i, String s) {

System.out.println(i + ” to ocena ” + s);

}

}


Przeci anie metod2

Przeciążanie metod

Słowo kluczowe this – zwraca odwołanie do obiektu, na rzecz którego metoda została wywołana. Może być stosowane tylko wewnątrz metody

  • Wywołując metodę klasy z wnętrza innej metody tej klasy, nie ma potrzeby używania this

  • this jest wykorzystywane tylko w przypadkach, kiedy trzeba jawnie użyć odwołania do aktualnego obiektu

  • Słowo kluczowe this umożliwia nam wywoływać jeden konstruktor z drugiego


Przeci anie metod3

Przeciążanie metod

  • Wywołanie konstruktora za pomocą this musi być pierwszą rzeczą, którą robimy

  • Stosując słowo kluczowe this można wywołać tylko jeden konstruktor

  • Za pomocą this nie można wywołać konstruktora z wnętrza jakiejkolwiek metody nie będącej konstruktorem


Przeci anie metod4

Przeciążanie metod

Przykład wywoływania konstruktora z konstruktora

class pies {

pies(int i) {

System.out.println(”Mam ” + i + ” psów”);

}

pies(String s) {

this(i);

System.out.println(s + ” ma psa”);

}

pies(String s, int i) {

this(s);

System.out.println(s + ” ma ” + i + ” psów”);

}

}


Inicjalizacja i sprz tanie

Plan

  • Gwarantowana inicjalizacja przez konstruktor

  • Przeciążanie metod

  • Sprzątanie: finalizacja i odśmiecanie pamięci

  • Inicjalizacja składowych

  • Inicjalizacja tablic


Sprz tanie finalizacja i od miecanie pami ci

Sprzątanie: finalizacja i odśmiecanie pamięci

Różnice między Java a C++

  • Java nie pozwala na tworzenie obiektów lokalnych

  • Java nie posiada destruktorów

  • W C++ obiekty zawsze są niszczone, podczas gdy w Javie obiekty nie zawsze ulegają odśmiecaniu

    Podsumowując

    W Javie:

  • Obiekty mogą nie zostać poddane odśmiecaniu

  • Odśmiecanie pamięci to nie destrukcja

  • Odśmiecanie dotyczy wyłącznie pamięci


Sprz tanie finalizacja i od miecanie pami ci1

Sprzątanie: finalizacja i odśmiecanie pamięci

  • Do zwalniania pamięci w Javie stosuje się metody finalize() i odśmiecacz pamięci

  • Metodę finalize() definiuje się we własnej klasie i wykorzystuje się ją przeważnie w przypadkach, w których obiekt może alokować pamięć inaczej niż poprzez stworzenie obiektu

  • Metodę finalize() stosuje się także do weryfikacji warunku zakończenia obiektu

  • Finalizacja i odśmiecanie nie są zagwarantowane


Sprz tanie finalizacja i od miecanie pami ci2

Sprzątanie: finalizacja i odśmiecanie pamięci

Różne sposoby pracy różnych odśmiecaczy

  • Zliczanie referencji

  • Odśmiecacze kopiujące

  • Adaptacyjny model odśmiecania

    ”Przyśpieszacze” JVM

  • Ładowacz klas (ang. loader)

  • Kompilator Just-In-Time (JIT)

  • Technologie Java HotSpot


Inicjalizacja i sprz tanie

Plan

  • Gwarantowana inicjalizacja przez konstruktor

  • Przeciążanie metod

  • Sprzątanie: finalizacja i odśmiecanie pamięci

  • Inicjalizacja składowych

  • Inicjalizacja tablic


Inicjalizacja sk adowych

Inicjalizacja składowych

  • W Javie w porównaniu do C++ pozwala na przypisanie wartości w miejscu definicji zmiennej wewnątrz klasy

  • Można wywołać metodę żeby była wartością początkową pod warunkiem, że metoda taka może posiadać argumenty , które już zostały zainicjalizowanymi składowymi klasy

Tak można napisać

class A {

int i = f();

int j = g(i);

// …

}

Tak nie można napisać

class A {

int j = g(i);

int i = f();

// …

}


Inicjalizacja sk adowych1

Inicjalizacja składowych

  • Do przeprowadzenia inicjalizacji można wykorzystać konstruktor

  • Kolejność inicjalizacji wewnątrz klasy jest wyznaczona przez kolejność definiowania zmiennych w danej klasie

  • Jeżeli zmienna typu podstawowego (boolean, char, byte, short, int, long, float, double, void) jest składową klasy to ma zapewnioną domyślną wartość początkową

  • Zmienne definiowane jako static mają taką samą inicjalizacje jak w przypadku zmiennych nie będących statycznymi. Inicjalizacja statyczna występuje tylko raz wtedy , gdy jest potrzebna


Inicjalizacja i sprz tanie

Plan

  • Gwarantowana inicjalizacja przez konstruktor

  • Przeciążanie metod

  • Sprzątanie: finalizacja i odśmiecanie pamięci

  • Inicjalizacja składowych

  • Inicjalizacja tablic


Inicjalizacja tablic

Inicjalizacja tablic

W Javie tablice można zdefiniować w następujący sposób

int[] a1; albo int a1[]

  • Tablica jest ciągiem obiektów albo zmiennych typu podstawowego, wszystkich tego samego typu, zebranych pod wspólną nazwą

  • Przy definiowaniu tablicy nie można ustalić jej wielkości. Aby stworzyć obszar dla tablicy trzeba użyć wyrażenia inicjalizującego

  • Tablice posiadają własną składową lenght mówiącą ile jest elementów w tablicy

    Tablice można zainicjalizować w następujący sposób

    int[] a1 = {1, 2, 3}; albo int[] a1 = new int[20]


Inicjalizacja tablic1

Inicjalizacja tablic

Tablica obiektów

Przy tablicach obiektów po wpisaniu komendy

Obiekty[] a = new Obiekty[rand.nextInt(20)]

W celu utworzenia tablicy, inicjalizacja nie jest kompletna, gdyż

otrzymamy tylko tablice referencji, dopóki same referencje nie zostaną

zainicjalizowane przez stworzenie nowych obiektów typu Obiekty

a[i] = new Obiekty(rand.nextInt(4))


Inicjalizacja tablic2

Inicjalizacja tablic

Tworzenie tablic wielowymiarowych

int[][] a1 = {

{1, 2, 3, },

{4, 5, 6, },

};

int[][][] a2 = new int[2][2][4];

Tworzenie tablicy wielowymiarowej obiektów

Integer[][] a3 ={

{ new Integer(1), new Integer(2), },

{ new Integer(3), new Integer(4), },

{ new Integer(5), new Integer(6), },

};


Inicjalizacja i sprz tanie

KONIEC


  • Login