logo

Klasy i obiekty w Javie

W Javie klasy i obiekty to podstawowe pojęcia programowania obiektowego (OOP), używane do reprezentowania koncepcji i bytów ze świata rzeczywistego. Klasa reprezentuje grupę obiektów o podobnych właściwościach i zachowaniu. Na przykład typ zwierzęcia Pies jest klasą, a konkretny pies ma na imię Tommy jest przedmiotem Pies klasa.

W tym artykule omówimy obiekty i klasy Java oraz sposób ich implementacji w naszym programie.



Klasy Javy

Klasa w Javie to zbiór obiektów o wspólnych cechach/zachowaniu i wspólnych właściwościach/atrybutach. Jest to zdefiniowany przez użytkownika projekt lub prototyp, na podstawie którego tworzone są obiekty. Na przykład Student jest klasą, podczas gdy konkretny uczeń o imieniu Ravi jest obiektem.

Właściwości klas Java

  1. Klasa nie jest bytem ze świata rzeczywistego. To tylko szablon, projekt lub prototyp, z którego tworzone są obiekty.
  2. Zajęcia nie zajmują pamięci.
  3. Klasa to grupa zmiennych o różnych typach danych i grupa metod.
  4. Klasa w Javie może zawierać:
    • Członek danych
    • metoda
    • Konstruktor
    • Klasa zagnieżdżona
    • Interfejs

Deklaracja klasy w Javie

  access_modifier     class   <  class_name>{ członek danych; metoda; konstruktor; klasa zagnieżdżona; interfejs; }>

Przykład klasy Java

Jawa








// Java Program for class example> class> Student {> >// data member (also instance variable)> >int> id;> >// data member (also instance variable)> >String name;> >public> static> void> main(String args[])> >{> >// creating an object of> >// Student> >Student s1 =>new> Student();> >System.out.println(s1.id);> >System.out.println(s1.name);> >}> }>

>

>

Jawa




// Java program to Illustrate Creation of Object> // Using new Instance> // Main class> class> GFG {> >// Declaring and initializing string> >String name =>'GeeksForGeeks'>;> >// Main driver method> >public> static> void> main(String[] args)> >{> >// Try block to check for exceptions> >try> {> >Class cls = Class.forName(>'GFG'>);> >// Creating object of main class> >// using instance method> >GFG obj = (GFG)cls.newInstance();> >// Print and display> >System.out.println(obj.name);> >}> >catch> (ClassNotFoundException e) {> >e.printStackTrace();> >}> >catch> (InstantiationException e) {> >e.printStackTrace();> >}> >catch> (IllegalAccessException e) {> >e.printStackTrace();> >}> >}> }>

>

>

algorytm r

Jawa




// Java program to Illustrate Creation of Object> // Using clone() method> // Main class> // Implementing Cloneable interface> class> GFG>implements> Cloneable {> >// Method 1> >@Override> >protected> Object clone()> >throws> CloneNotSupportedException> >{> >// Super() keyword refers to parent class> >return> super>.clone();> >}> >String name =>'GeeksForGeeks'>;> >// Method 2> >// main driver method> >public> static> void> main(String[] args)> >{> >GFG obj1 =>new> GFG();> >// Try block to check for exceptions> >try> {> >GFG obj2 = (GFG)obj1.clone();> >System.out.println(obj2.name);> >}> >catch> (CloneNotSupportedException e) {> >e.printStackTrace();> >}> >}> }>

>

>

Wyjście 1

0 null>

Wyjście 2

GeeksForGeeks>

Wyjście 3

GeeksForGeeks>

Składniki klas Java

Ogólnie rzecz biorąc, deklaracje klas mogą zawierać te komponenty w następującej kolejności:

  1. Modyfikatory : Klasa może być publiczna lub mieć dostęp domyślny (patrz Ten dla szczegółów).
  2. Słowo kluczowe klasy: słowo kluczowe class służy do tworzenia klasy.
  3. Nazwa klasy: Imię powinno zaczynać się od pierwszej litery (zgodnie z konwencją pisanej wielką literą).
  4. Nadklasa (jeśli istnieje): Nazwa rodzica klasy (nadklasy), jeśli istnieje, poprzedzona słowem kluczowym rozciąga się. Klasa może rozszerzać (podklasę) tylko jednego rodzica.
  5. Interfejsy (jeśli występują): Rozdzielana przecinkami lista interfejsów zaimplementowanych przez klasę, jeśli istnieje, poprzedzona słowem kluczowym implements. Klasa może implementować więcej niż jeden interfejs.
  6. Ciało: Treść klasy jest otoczona nawiasami klamrowymi { }.

Konstruktory służą do inicjowania nowych obiektów. Pola to zmienne określające stan klasy i jej obiektów, natomiast metody służą do implementowania zachowania klasy i jej obiektów.
Istnieją różne typy klas używanych w aplikacjach czasu rzeczywistego, takich jak zagnieżdżone klasy , zajęcia anonimowe , I wyrażenia lambda .

Obiekty Java

Obiekt w Javie jest podstawową jednostką programowania obiektowego i reprezentuje byty z życia codziennego. Obiekty to instancje klasy utworzone w celu korzystania z atrybutów i metod klasy. Typowy program w Javie tworzy wiele obiektów, które jak wiadomo oddziałują na siebie poprzez wywoływanie metod. Obiekt składa się z:

  1. Państwo : Jest reprezentowany przez atrybuty obiektu. Odzwierciedla także właściwości obiektu.
  2. Zachowanie : Jest reprezentowany przez metody obiektu. Odzwierciedla także reakcję obiektu na inne obiekty.
  3. Tożsamość : Nadaje obiektowi unikalną nazwę i umożliwia interakcję jednego obiektu z innymi obiektami.

Przykład obiektu: pies

Obiekty Java

Przedmioty odpowiadają rzeczom spotykanym w realnym świecie. Na przykład program graficzny może zawierać obiekty takie jak okrąg, kwadrat i menu. System zakupów online może zawierać takie obiekty, jak koszyk, klient i produkt.

Notatka: Kiedy tworzymy obiekt, który nie jest prymitywnym typem danych, jest on zawsze przydzielany w pamięci sterty.

Deklarowanie obiektów (nazywane także tworzeniem instancji klasy)

Kiedy tworzony jest obiekt klasy, mówi się, że klasa istnieje instancja . Wszystkie instancje mają wspólne atrybuty i zachowanie klasy. Ale wartości tych atrybutów, czyli stan, są unikalne dla każdego obiektu. Pojedyncza klasa może mieć dowolną liczbę instancji.

Przykład:

Deklaracja obiektu Java

Jak deklarujemy zmienne typu (wpisz nazwę;). Powiadamia to kompilator, że będziemy używać tej nazwy w odniesieniu do danych, których typem jest type. W przypadku zmiennej pierwotnej deklaracja ta rezerwuje również odpowiednią ilość pamięci dla zmiennej. Zatem w przypadku zmiennych referencyjnych typem musi być ściśle konkretna nazwa klasy. Ogólnie rzecz biorąc, my żargon utwórz obiekty klasy abstrakcyjnej lub interfejsu.

Dog tuffy;>

Jeśli w ten sposób zadeklarujemy zmienną referencyjną (tuffy), jej wartość będzie nieokreślona (null), dopóki obiekt nie zostanie faktycznie utworzony i przypisany do niej. Samo zadeklarowanie zmiennej referencyjnej nie tworzy obiektu.

Inicjowanie obiektu Java

Operator new tworzy instancję klasy, przydzielając pamięć nowemu obiektowi i zwracając odwołanie do tej pamięci. Operator new wywołuje także konstruktor klasy.

Przykład:

Jawa




// Class Declaration> public> class> Dog {> >// Instance Variables> >String name;> >String breed;> >int> age;> >String color;> >// Constructor Declaration of Class> >public> Dog(String name, String breed,>int> age,> >String color)> >{> >this>.name = name;> >this>.breed = breed;> >this>.age = age;> >this>.color = color;> >}> >// method 1> >public> String getName() {>return> name; }> >// method 2> >public> String getBreed() {>return> breed; }> >// method 3> >public> int> getAge() {>return> age; }> >// method 4> >public> String getColor() {>return> color; }> >@Override> public> String toString()> >{> >return> (>'Hi my name is '> +>this>.getName()> >+>'. My breed,age and color are '> >+>this>.getBreed() +>','> +>this>.getAge()> >+>','> +>this>.getColor());> >}> >public> static> void> main(String[] args)> >{> >Dog tuffy> >=>new> Dog(>'tuffy'>,>'papillon'>,>5>,>'white'>);> >System.out.println(tuffy.toString());> >}> }>

>

jak uzyskać aktualną datę w Javie
>

Wyjście

Hi my name is tuffy. My breed,age and color are papillon,5,white>

Zainicjuj za pomocą metody/funkcji:

Jawa




public> class> GFG {> >// sw=software> >static> String sw_name;> >static> float> sw_price;> >static> void> set(String n,>float> p)> >{> >sw_name = n;> >sw_price = p;> >}> >static> void> get()> >{> >System.out.println(>'Software name is: '> + sw_name);> >System.out.println(>'Software price is: '> >+ sw_price);> >}> >public> static> void> main(String args[])> >{> >GFG.set(>'Visual studio'>,>0>.0f);> >GFG.get();> >}> }>

Zastępowanie metody w Javie

>

>

Wyjście

Software name is: Visual studio Software price is: 0.0>

Ta klasa zawiera pojedynczy konstruktor. Konstruktor możemy rozpoznać po tym, że jego deklaracja używa tej samej nazwy co klasa i nie ma typu zwracanego. Kompilator Java rozróżnia konstruktory na podstawie liczby i typu argumentów. Konstruktor w Pies klasa przyjmuje cztery argumenty. Poniższa instrukcja podaje wartości dla tych argumentów: tuffy, papillon, 5 i white:

Dog tuffy = new Dog('tuffy','papillon',5, 'white');>

Wynik wykonania tej instrukcji można zilustrować jako:

Alokacja pamięci obiektów Java

Notatka: Wszystkie klasy mają przynajmniej jeden konstruktor. Jeśli klasa nie zadeklarowała żadnej jawnie, kompilator Java automatycznie udostępnia konstruktor bezargumentowy, zwany także konstruktorem domyślnym. Ten konstruktor domyślny wywołuje konstruktor bezargumentowy klasy nadrzędnej (ponieważ zawiera tylko jedną instrukcję, np. super();) lub Obiekt konstruktor klasy, jeśli klasa nie ma innego rodzica (ponieważ klasa Object jest rodzicem wszystkich klas, bezpośrednio lub pośrednio).

Sposoby tworzenia obiektu klasy

Istnieją cztery sposoby tworzenia obiektów w Javie. Ściśle mówiąc, istnieje tylko jeden sposób (używając a nowy słowo kluczowe), a reszta wewnętrznie używa a nowy słowo kluczowe.

1. Używanie nowego słowa kluczowego

Jest to najpopularniejszy i ogólny sposób tworzenia obiektu w Javie.

Przykład:

// creating object of class Test Test t = new Test();>

2. Użycie metody Class.forName(String className).

W pakiecie java.lang znajduje się predefiniowana klasa o nazwie Class. Metoda forName(String className) zwraca obiekt Class powiązany z klasą o podanej nazwie string. Musimy podać w pełni kwalifikowaną nazwę klasy. Po wywołaniu nowej metody Instance() na tym obiekcie Class zwracana jest nowa instancja klasy o podanej nazwie ciągu.

// creating object of public class Test // consider class Test present in   com.p1   package Test obj = (Test)Class.forName('com.p1.Test').newInstance();>

3. Korzystanie z metody clone().

metoda clone() jest obecna w klasie Object. Tworzy i zwraca kopię obiektu.

// creating object of class Test Test t1 = new Test(); // creating clone of above object Test t2 = (Test)t1.clone();>

4. Deserializacja

Deserializacja to technika odczytywania obiektu ze stanu zapisanego w pliku. Odnosić się do Serializacja/Deserializacja w Javie

FileInputStream file = new FileInputStream(filename); ObjectInputStream in = new ObjectInputStream(file); Object obj = in.readObject();>

Tworzenie wielu obiektów tylko jednego typu (dobra praktyka)

W czasie rzeczywistym potrzebujemy różnych obiektów klasy różnymi metodami. Tworzenie wielu referencji do ich przechowywania nie jest dobrą praktyką, dlatego deklarujemy statyczną zmienną referencyjną i używamy jej zawsze, gdy jest to wymagane. W tym przypadku marnowanie pamięci jest mniejsze. Obiekty, do których nie ma już odniesień, zostaną zniszczone przez Śmieciarz z Jawy.

Przykład:

Test test = new Test(); test = new Test();>

W systemie dziedziczenia używamy zmiennej referencyjnej klasy nadrzędnej do przechowywania obiektu podklasy. W tym przypadku możemy przełączać się na różne obiekty podklas, używając tej samej zmiennej, do której się odwołujemy.

Przykład:

class Animal {} class Dog extends Animal {} class Cat extends Animal {} public class Test { // using Dog object Animal obj = new Dog(); // using Cat object obj = new Cat(); }>

Obiekty anonimowe w Javie

Obiekty anonimowe to obiekty, których instancje są tworzone, ale nie są przechowywane w zmiennej referencyjnej.

  • Służą do natychmiastowych wywołań metod.
  • Zostaną zniszczone po wywołaniu metody.
  • Są one szeroko stosowane w różnych bibliotekach. Na przykład w bibliotekach AWT są one używane do wykonania jakiejś akcji po przechwyceniu zdarzenia (np. naciśnięcie klawisza).
  • W poniższym przykładzie, gdy zostanie naciśnięty przycisk klawisza (określany przez btn), po prostu tworzymy anonimowy obiekt klasy EventHandler w celu wywołania metody handle.
btn.setOnAction(new EventHandler() { public void handle(ActionEvent event) { System.out.println('Hello World!'); } });>

Różnica między klasą Java a obiektami

Różnice między klasą i obiektem w Javie są następujące:

Klasa

Obiekt

Klasa jest planem obiektu. Służy do tworzenia obiektów. Obiekt jest instancją klasy.
Podczas deklarowania klasy nie jest przydzielana żadna pamięć. Pamięć jest przydzielana natychmiast po utworzeniu obiektu.
Klasa to grupa podobnych obiektów. Obiekt to byt występujący w świecie rzeczywistym, taki jak książka, samochód itp.
Klasa jest bytem logicznym. Obiekt jest bytem fizycznym.
Klasę można zadeklarować tylko raz. Obiekty można tworzyć wiele razy zgodnie z wymaganiami.
Przykładem klasy może być samochód. Obiektami klasy samochodowej mogą być BMW, Mercedes, Ferrari itp.