Junior
Kādi klases tipi pastāv Java?
sobes.tech AI
Atbilde no AI
Java ir šādi galvenie klases tipi:
-
Standarta klase (Standard Class)
- Var saturēt laukus, metodes, konstruktorus.
- Var manto citiem klasēm, ja nav deklarēta kā
final. - Var realizēt interfeisus.
- Deklarē ar piekļuves modifikatoriem (
public,protected,default,private).
-
Abstrakta klase (Abstract Class)
- Deklarēta ar vārdu
abstract. - Tieši nevar tikt instancēta.
- Var saturēt abstraktus (bez realizācijas) un parastus metodes.
- Domāta mantošanai; apakšklases jānodrošina abstraktu metožu realizācija.
// Abstrakta klase figūras definīcijai abstract class Shape { abstract double area(); // Abstrakta metode laukuma aprēķinam void display() { // Parasta metode System.out.println("This is a shape."); } } - Deklarēta ar vārdu
-
Finala klase (Final Class)
- Deklarēta ar vārdu
final. - Nav iespējams manto citiem klasēm.
- Lieto, lai novērstu klases paplašināšanu, nodrošinātu drošību vai nemainīgu realizāciju.
// Finala klase, kuras mantošana nav atļauta final class ImmutableString { private final String value; public ImmutableString(String value) { this.value = value; } public String getValue() { return value; } } - Deklarēta ar vārdu
-
Enum (Enum)
- Īpašs klases tips, paredzēts fiksēta konstantes kopuma pārstāvībai.
- Deklarē ar vārdu
enum. - Enum konstantes pēc noklusējuma ir
public static final. - Var saturēt laukus, metodes un konstruktorus (
privateslēpts).
// Nedēļas dienu enum enum DayOfWeek { MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY } -
Anonīmas (Anonymous Class)
- Klase bez nosaukuma, kas tiek izveidota un instancēta vienlaikus.
- Bieži tiek izmantotas interfeisu realizācijai vai klases paplašināšanai "uz vietas", kad nepieciešama vienreizēja lietošana.
- Nav iespējams deklarēt skaidrus konstruktorus.
// Anonīmas klases izveide, realizējot Runnable interfeisu Runnable r = new Runnable() { @Override public void run() { System.out.println("Running in an anonymous class."); } }; -
Iekšējās (Nested Class)
- Klases, kas deklarētas citas klases iekšpusē.
- Ir divu veidu:
- Statiskās iekšējās klases (Static Nested Class): deklarētas ar
static. Tām nav tiešas piekļuves ārējās klases nestatiskajiem locekļiem. Tiek instancētas kā parastas klases. - Iekšējās klases (Inner Class): nav deklarētas kā
static. Tām ir piekļuve visiem ārējās klases locekļiem, ieskaitotprivate. Prasa ārējās klases instanci, lai izveidotu savu instanci.
- Statiskās iekšējās klases (Static Nested Class): deklarētas ar
// Ārējā klase class OuterClass { private String outerField = "Outer"; // Statiskā iekšējā klase static class StaticNestedClass { void display() { System.out.println("Inside StaticNestedClass."); // Nav tiešas piekļuves outerField } } // Iekšējā klase class InnerClass { void display() { System.out.println("Inside InnerClass. outerField: " + outerField); // Pieeja outerField } } } -
Rekordklases (Record - no Java 14)
- Deklarētas ar vārdu
record. - Paredzētas datu glabāšanai. Kompilators automātiski ģenerē konstruktoru, piekļuves metodes (
accessor methods),equals(),hashCode()untoString(). - Rekorda lauki ir neizmaināmi (
final).
// Rekords, kas attēlo punktu 2D telpā record Point(int x, int y) { // Kompilators ģenerēs konstruktoru, metodes x(), y(), equals(), hashCode(), toString() } - Deklarētas ar vārdu