Junior
Kokie klasės tipai yra Java?
sobes.tech AI
Atsakymas iš AI
Java yra šie pagrindiniai klasių tipai:
-
Standartinė (Standard Class)
- Gali turėti laukus, metodus, konstruktorius.
- Gali būti paveldėta kitų klasių, jei nėra deklaruota kaip
final. - Gali įgyvendinti sąsajas.
- Deklaruojama su prieigos modifikatoriais (
public,protected,default,private).
-
Abstract (Abstract Class)
- Deklaruojama su žodžiu
abstract. - Negali būti tiesiogiai instancijuojama.
- Gali turėti abstrakčius metodus (be realizacijos) ir įprastus metodus.
- Skirta paveldėjimui; pogrindžiai turi pateikti abstrakčių metodų realizaciją.
// Abstrakti klasė figūros apibrėžimui abstract class Shape { abstract double area(); // Abstraktus metodas ploto skaičiavimui void display() { // Įprastas metodas System.out.println("This is a shape."); } } - Deklaruojama su žodžiu
-
Finalinė (Final Class)
- Deklaruojama su žodžiu
final. - Negali būti paveldėta kitų klasių.
- Naudojama norint užkirsti kelią klasių plėtimui, užtikrinti saugumą ar nepakitusią įgyvendinimą.
// Finalinė klasė, kurios paveldėti negalima final class ImmutableString { private final String value; public ImmutableString(String value) { this.value = value; } public String getValue() { return value; } } - Deklaruojama su žodžiu
-
Enum (Enum)
- Specialus klasės tipas, skirtas reprezentuoti fiksuotą konstatų rinkinį.
- Deklaruojama su žodžiu
enum. - Enum konstatų reikšmės pagal numatytuosius nustatymus yra
public static final. - Gali turėti laukus, metodus ir konstruktorius (su paslėptu
privatemodifikatoriumi).
// Savaitės dienų enum enum DayOfWeek { MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY } -
Anoniminės (Anonymous Class)
- Be vardo klasė, kuri kuriama ir instancijuojama vienu metu.
- Dažnai naudojama sąsajų įgyvendinimui arba klasių išplėtimui "gyvai", kai reikalinga vienkartinė naudojimas.
- Negali turėti aiškių konstruktorių.
// Sukurti anoniminę klasę, įgyvendinančią Runnable sąsają Runnable r = new Runnable() { @Override public void run() { System.out.println("Running in an anonymous class."); } }; -
Vidinės (Nested Class)
- Klasės, deklaruotos kitos klasės viduje.
- Yra dviejų tipų:
- Statinės vidinės klasės (Static Nested Class): deklaruotos su
static. Neturi tiesioginės prieigos prie nestatinių išorinio klases narių. Instancijuojamos kaip įprastos klasės. - Vidinės klasės (Inner Class): nėra deklaruotos kaip
static. Turi prieigą prie visų išorinio klases narių, įskaitantprivate. Reikalauja išorinio klases egzempliorio, kad sukurtų savo egzempliorių.
- Statinės vidinės klasės (Static Nested Class): deklaruotos su
// Išorinis klasė class OuterClass { private String outerField = "Outer"; // Statinė vidinė klasė static class StaticNestedClass { void display() { System.out.println("Inside StaticNestedClass."); // Nėra tiesioginės prieigos prie outerField } } // Vidinė klasė class InnerClass { void display() { System.out.println("Inside InnerClass. outerField: " + outerField); // Prieiga prie outerField } } } -
Įrašai (Record - nuo Java 14)
- Deklaruojami su žodžiu
record. - Skirti duomenų saugojimui. Kompiliatorius automatiškai generuoja konstruktorių, prieigos metodus (
accessor methods),equals(),hashCode()irtoString(). - Rekoardo laukai yra neabejotinai
final.
// Rekoordas, atvaizduojantis tašką 2D erdvėje record Point(int x, int y) { // Kompiliatorius sugeneruos konstruktorių, metodus x(), y(), equals(), hashCode(), toString() } - Deklaruojami su žodžiu