logo

Rodzaje klas w Javie

W Javie tzw klasa to projekt, z którego możemy stworzyć indywidualny obiekt. Java udostępnia słowo kluczowe nazwana klasa, dzięki której możemy zadeklarować klasę. Wewnątrz klasy definiujemy klasa członkowie i funkcje. Nie da się stworzyć Programy Java bez klasy. Klasę możemy również nazwać a określony przez użytkownika Rodzaje zajęć

W Javie istnieje siedem typów klas:

    Klasa statyczna Ostatnia klasa Klasa abstrakcyjna Klasa betonu Klasa Singletona Klasa POJO Klasa wewnętrzna
Rodzaje klas w Javie

Klasa statyczna

W Java , static to słowo kluczowe zarządzające obiektami w pamięci. Obiekt statyczny należy do klasy, a nie instancji klasy.

Możemy zrobić klasę statyczny wtedy i tylko wtedy, gdy jest to klasa zagnieżdżona. Można również powiedzieć, że klasy statyczne nazywane są klasami zagnieżdżonymi. Oznacza to, że klasa zadeklarowana jako statyczna w innej klasie jest nazywana klasą statyczną. Zagnieżdżona klasa statyczna nie wymaga odniesienia do klasy zewnętrznej. Celem klasy statycznej jest przedstawienie zarysu klasy dziedziczonej.

Właściwości klasy statycznej to:

  • Klasa ma tylko statyczne elementy członkowskie.
  • Nie może uzyskać dostępu do elementu członkowskiego (niestatycznego) klasy zewnętrznej.
  • Nie możemy utworzyć obiektu klasy statycznej.

Rozumiemy koncepcję klasy statycznej poprzez program.

StaticClassExample.java

 public class StaticClassExample { private static String str = 'Javatpoint'; //nested class which is a Static class public static class StaticDemo { //non-static method of Static class public void show() { System.out.println(str); } } public static void main(String args[]) { StaticClassExample.StaticDemo obj = new StaticClassExample.StaticDemo(); obj.show(); } } 

Wyjście:

 Javatpoint 

W zewnętrznej klasie powyższego programu zadeklarowaliśmy zmienną ul jako statyczny, ponieważ uzyskujemy dostęp do tej zmiennej z kontekstu statycznego. Jeśli zadeklarujemy tę zmienną jako niestatyczną, kompilator wyświetli błąd, ponieważ zagnieżdżona klasa statyczna nie może uzyskać dostępu do niestatycznych elementów klasy zewnętrznej.

Drugą rzeczą, którą należy zauważyć w powyższym programie, jest to, że aby utworzyć obiekt klasy zagnieżdżonej, nie musimy tworzyć instancji klasy zewnętrznej. Jeśli klasa zagnieżdżona nie jest klasą statyczną, musimy utworzyć instancję klasy zewnętrznej.

Ostatnia klasa

Słowo ostateczny oznacza, że ​​nie można go zmienić. The finał klasę w Javie można zadeklarować za pomocą ostatnie słowo kluczowe . Kiedy zadeklarujemy klasę jako ostateczną, wartości pozostaną takie same w całym programie. Celem ostatnich zajęć jest utworzenie klasy niezmienny jak klasa String. To tylko sposób na uczynienie klasy niezmienną. Pamiętaj, że Ostatnie zajęcia nie mogą zostać przedłużone . To także zapobiega podklasowaniu klasy .

Rozumiemy koncepcję ostatniej klasy poprzez program.

zmienna globalna js

FinalClassExample.java

 //base class declared as final final class A { void printmsg() { System.out.print('Base class method is executed.'); } } //derived class //extending a final class which is not possible //it shows the error cannot inherit final class at compile time class B extends A { void printmsg() { System.out.print('Derived class method is executed.'); } } //main class public class FinalClassExample { public static void main(String[] arg) { B obj = new B(); obj.printmsg(); } } 

Wyjście:

 /FinalClassExample.java:11: error: cannot inherit from final A class B extends A 

Klasa abstrakcyjna

Jakiś klasa abstrakcyjna jest zadeklarowanym za pomocą słowa kluczowego abstrakcyjny . Klasa może, ale nie musi, zawierać metody abstrakcyjne. Nie możemy utworzyć instancji klasy abstrakcyjnej, ale może to być podklasa. Klasy te są niekompletne, więc aby uzupełnić klasę abstrakcyjną, powinniśmy rozszerzyć klasy abstrakcyjne na klasę konkretną. Kiedy deklarujemy podklasę jako abstrakcyjną, konieczne jest zapewnienie implementacji metod abstrakcyjnych. Dlatego podklasę również należy uznać za abstrakcyjną. Ukrywanie danych możemy uzyskać za pomocą klasy abstrakcyjnej. Przykładem klasy abstrakcyjnej jest Mapa streszczenia klasa będąca częścią frameworka Collections.

Rozumiemy koncepcję klasy abstrakcyjnej poprzez program.

AbstractClassExample.java

 //abstract class abstract class MathematicalOperations { int a=30, b=40; //abstract method public abstract void add(); } public class Operation extends MathematicalOperations { //definition of abstract method public void add() { System.out.println('Sum of a and b is: 'a+b); } public static void main(String args[]) { MathematicalOperations obj = new Operation(); obj.add(); } } 

Wyjście:

 Sum of a and b is: 70 

Klasa betonu

Są to zwykłe klasy Java. Klasa pochodna, która zapewnia podstawowe implementacje wszystkich metod, które nie zostały jeszcze zaimplementowane w klasie bazowej, jest nazywana a Beton klasa. Innymi słowy, są to zwykłe klasy Java, w których zaimplementowane są wszystkie metody klasy abstrakcyjnej. Możemy bezpośrednio stworzyć obiekt klasy betonowej. Pamiętaj, że klasa konkretna i klasa abstrakcyjna to nie to samo. Konkretna klasa może rozszerzać swoją klasę nadrzędną. Używa się go do specyficznych wymagań.

Rozumiemy koncepcję konkretnej klasy poprzez program.

ConcreteClassExample.java

adnotacje dotyczące butów wiosennych
 //Concrete Class public class ConcreteClassExample { //method of the concreted class static int product(int a, int b) { return a * b; } public static void main(String args[]) { //method calling int p = product(6, 8); System.out.println('Product of a and b is: ' + p); } } 

Wyjście:

 Product of a and b is: 48 

Klasa Singletona

Klasę, która w danej chwili posiada tylko obiekt, nazywamy klasą klasa singletonowa . Jeśli jednak spróbujemy utworzyć instancję po raz drugi, nowo utworzona instancja wskazuje na pierwszą instancję. Jeśli dokonaliśmy jakichkolwiek zmian wewnątrz klasy poprzez dowolną instancję, modyfikacja wpływa również na zmienną pojedynczej instancji. Zwykle służy do kontroli dostępu podczas połączenia z bazą danych i programowania gniazd. Jeśli chcemy utworzyć klasę singleton, wykonaj następujące czynności:

  • Utwórz prywatny konstruktor .
  • Utwórz metodę statyczną (używając leniwej inicjalizacji), która zwraca obiekt klasy singleton.

SingletonClassExample.java

 public class Singleton { private String objectState; private static Singleton instance = null; private Singleton() throws Exception { this.objectState = 'Javatpoint'; } public static Singleton getInstance() { if(instance==null) { try { instance=new Singleton(); } catch(Exception e) { e.printStackTrace(); } } return instance; } public String getObjectState() { return objectState; } public void setObjectState(String objectState) { this.objectState = objectState; } } 

Wyjście:

 Javatpoint 

Klasa POJO

W Javie POJO oznacza Zwykły stary obiekt Java. Klasa Java, która zawiera tylko zmienne prywatne, setter i getter, jest nazywana POJO klasa. Służy do definiowania obiektów Java, które zwiększają możliwość ponownego użycia i czytelność programu Java. Klasa zapewnia enkapsulację. Jest szeroko stosowany w Javie, ponieważ łatwo jest zrozumieć te klasy. Klasa POJO posiada następujące właściwości:

  • Nie rozszerza predefiniowanych klas, takich jak Arrays, HttpServlet itp.
  • Nie może zawierać wcześniej określonych adnotacji.
  • Nie może implementować wstępnie zdefiniowanych interfejsy .
  • Nie jest wymagane dodawanie żadnego konstruktora.
  • Wszystkie zmienne instancji muszą być prywatne.
  • Getter/setter metody musi być publiczny.

Rozumiemy koncepcję klasy POJO poprzez program Java.

PojoClassExample.java

 class PojoDemo { //private variable private double price=89764.34; //getter method public double getPrice() { return price; } //setter method public void setPrice(int price) { this.price = price; } } //main class public class PojoClassExample { public static void main(String args[]) { PojoDemo obj = new PojoDemo(); System.out.println('The price of an article is '+ obj.getPrice()+' Rs.'); } } 

Wyjście:

 The price of an article is 89764.34 Rs. 

Wewnętrzna klasa

Java pozwala nam zdefiniować klasę w klasie i takie klasy są znane jako zagnieżdżone klasy . Służy do logicznego grupowania klas i osiągania celów kapsułkowanie . Dostęp do zewnętrznych składowych klasy (w tym prywatnych) można uzyskać za pomocą metody klasa wewnętrzna . Ogólna składnia deklarowania klasy zagnieżdżonej jest następująca:

 class OuterClass { //code class NestedClass { //code } } 

Klasy zagnieżdżone są dwojakiego rodzaju:

1. Statyczna klasa zagnieżdżona: To znaczy klasa statyczny I zagnieżdżone nazywa się statyczną klasą zagnieżdżoną. Oddziałuje z członkiem instancji swojej klasy zewnętrznej. Możemy utworzyć obiekt statycznej klasy zagnieżdżonej, używając następującej składni:

 OuterClass.StaticNestedClass nestedObject = new OuterClass.StaticNestedClass(); 

2. Niestatyczna klasa zagnieżdżona: Wywoływane są niestatyczne klasy zagnieżdżone klasy wewnętrzne .

Ogólna składnia deklarowania statycznej klasy zagnieżdżonej i klasy wewnętrznej jest następująca:

 class OuterClass { ... static class StaticNestedClass { ... } class InnerClass { ... } } 

Rozumiemy koncepcję klasy wewnętrznej za pomocą programu Java.

InnerClassExample.java

 public class InnerClassExample { public static void main(String[] args) { System.out.println('This is outer class.'); } class InnerClass { public void printinner() { System.out.println('This is inner class.'); } } } 

Rodzaje klas wewnętrznych

Java udostępnia dwa typy klas wewnętrznych:

Lokalna klasa wewnętrzna

Jest to rodzaj klasy wewnętrznej zdefiniowanej wewnątrz bloku. Tutaj blok oznacza treść metody (grupę instrukcji ujętą w parę nawiasów klamrowych). Ze względu na definicję wewnątrz bloku nazywana jest również metodą lokalnej klasy wewnętrznej. Są to klasy niestatyczne, ponieważ mają dostęp do elementów członkowskich instancji bloku. Lokalne klasy wewnętrzne możemy zdefiniować w treści metody. Klasy te muszą zostać utworzone w bloku, w którym są zdefiniowane.

Kiedy kompilujemy program w języku Java (program zawierający klasę wewnętrzną), kompilator generuje dwa pliki klas, a mianowicie Klasa zewnętrzna I Zewnętrzna klasa wewnętrzna . Jeden dla klasy zewnętrznej, a drugi dla klasy wewnętrznej, która zawiera odwołanie do klasy zewnętrznej.

Przyjrzyjmy się koncepcji lokalnej klasy wewnętrznej za pomocą programu Java.

ZewnętrznaKlasa.java

 public class OuterClass { private void getValue() { //if you are using Java 7 make the variable final //if you are using Java 8 the code runs successfully int sum = 20; //declaring method local inner class class InnerClass { public int divisor; public int remainder; public InnerClass() { divisor = 4; remainder = sum%divisor; } private int getDivisor() { return divisor; } private int getRemainder() { return sum%divisor; } private int getQuotient() { System.out.println('We are inside the inner class'); return sum / divisor; } } //creating an instance of inner class InnerClass ic = new InnerClass(); System.out.println('Divisor = '+ ic.getDivisor()); System.out.println('Remainder = ' + ic.getRemainder()); System.out.println('Quotient = ' + ic.getQuotient()); } public static void main(String[] args) { //creating an instance of outer class OuterClass oc = new OuterClass(); oc.getValue(); } } 

Wyjście:

 Divisor = 4 Remainder = 0 We are inside the inner class Quotient = 5 

Anonimowa klasa wewnętrzna

Jest to typ klasy wewnętrznej, taki sam jak klasy lokalne, z tą tylko różnicą, że klasa nie ma nazwy i dla niej tworzony jest pojedynczy obiekt. Dzięki temu kod jest bardziej zwięzły. Stosuje się go, jeśli chcemy raz skorzystać z klasy lokalnej. Klasy anonimowe możemy tworzyć na dwa sposoby:

  • Za pomocą interfejsu
  • Deklarując klasę konkretną i abstrakcyjną

Składnia:

korzystanie z Internetu
 // the class may an interface, abstract or concrete class DemoClass obj = new DemoClass() { //methods //data members public void demomethod() { //statements } }; 

Patrząc na powyższą składnię, widzimy, że jest to to samo, co wywołanie konstruktora, z tą różnicą, że klasa ma definicję zawartą w bloku.

AnonymousClassExample.java

 interface Score { int run = 321; void getScore(); } public class AnonymousClassExample { public static void main(String[] args) { // Myclass is hidden inner class of Score interface // whose name is not written but an object to it // is created. Score s = new Score() { @Override public void getScore() { //prints score System.out.print('Score is '+run); } }; s.getScore(); } } 

Wyjście:

 Score is 321 

Java udostępnia także inny typ klasy Java, znany jako klasa opakowania. Omówmy to szczegółowo.

Klasa opakowania

W Javie termin klasa opakowania reprezentuje zbiór klas Java, które obiektywizują prymitywny typ Java. Oznacza to, że dla każdego typu pierwotnego istnieje odpowiednia klasa opakowania. Klasy opakowania służą do konwersji typu pierwotnego na obiekt i odwrotnie. Poniższy rysunek przedstawia hierarchię klas opakowania.

Rodzaje klas w Javie

Poniższa tabela przedstawia typ pierwotny i odpowiednią klasę opakowania.

Typ pierwotny Klasa opakowania
wartość logiczna Wartość logiczna
wew Liczba całkowita
zwęglać Postać
podwójnie Podwójnie
platforma Platforma
długi Długi
bajt Bajt
krótki Krótki

Przyjrzyjmy się klasie opakowania za pomocą programu Java.

WrapperClassExample.java

 public class WrapperClassExample { public static void main(String args[]) { byte x = 0; //wrapping byte primitive type into Byte object Byte byteobj = new Byte(x); int y = 23; //wrapping int primitive type into Integer object Integer intobj = new Integer(y); char c='m'; //wrapping char primitive type into Character object Character charobj=c; //printing values from objects System.out.println('Byte object byteobj: ' + byteobj); System.out.println('Integer object intobj: ' + intobj); System.out.println('Character object charobj: ' + charobj); } } 

Wyjście:

 Byte object byteobj: 0 Integer object intobj: 23 Character object charobj: m