Junior
Millised klassi tüübid on Java-s olemas?
sobes.tech AI
Vastus AI-lt
Java-s on järgmised põhiliikide klasside tüübid:
-
Tavaline klass (Standard Class)
- Võib sisaldada välju, meetodeid, konstruktorid.
- Võib pärida teistelt klassidelt, kui see pole
final. - Võib rakendada liideseid.
- Deklareeritakse juurdepääsuklassidega (
public,protected,default,private).
-
Abstraktne klass (Abstract Class)
- Deklareeritakse sõnaga
abstract. - Ei saa otse instantsiseerida.
- Võib sisaldada abstraktseid meetodeid (ilma rakenduseta) ja tavalisi meetodeid.
- Mõeldud pärimiseks; alamklassid peavad pakkuma abstraktsete meetodite rakenduse.
// Abstraktne klass kujundi jaoks abstract class Shape { abstract double area(); // Abstraktne meetod pindala arvutamiseks void display() { // Tavaline meetod System.out.println("This is a shape."); } } - Deklareeritakse sõnaga
-
Lõplik klass (Final Class)
- Deklareeritakse sõnaga
final. - Ei saa pärida teistelt klassidelt.
- Kasutatakse klassi laiendamise vältimiseks, turvalisuse või muutumatuse tagamiseks.
// Lõplik klass, mida ei saa pärida final class ImmutableString { private final String value; public ImmutableString(String value) { this.value = value; } public String getValue() { return value; } } - Deklareeritakse sõnaga
-
Enum (Enum)
- Eriline klassitüüp, mõeldud fikseeritud konstandite kogumi esindamiseks.
- Deklareeritakse sõnaga
enum. - Enum-konstandid on vaikimisi
public static final. - Võib omada välju, meetodeid ja konstruktorid (
privatepeidetud).
// Nädalapäevade enum enum DayOfWeek { MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY } -
Anonüümklass (Anonymous Class)
- Klass ilma nimega, mis luuakse ja instantsiseerub samaaegselt.
- Kasutatakse sageli liideste rakendamiseks või klasside laiendamiseks "kohapeal", kui on vaja ühekordset kasutust.
- Ei saa omada väljendatud konstruktorid.
// Anonüümklass Runnable liidese rakendamiseks Runnable r = new Runnable() { @Override public void run() { System.out.println("Running in an anonymous class."); } }; -
Sisemised klassid (Nested Class)
- Klassid, mis on deklareeritud teise klassi sees.
- On kahte tüüpi:
- Statilised sisemised klassid (Static Nested Class): deklareeritud sõnaga
static. Ei pääse otse ligi välise klassi mitte-staatilistele liikmetele. Instantsiseeritakse nagu tavaline klass. - Sisemised klassid (Inner Class): ei ole deklareeritud
static. Neil on juurdepääs kõigile välise klassi liikmetele, kaasa arvatudprivate. Vajavad välise klassi eksemplari, et luua oma eksemplar.
- Statilised sisemised klassid (Static Nested Class): deklareeritud sõnaga
// Välise klass class OuterClass { private String outerField = "Outer"; // Statiline sisemine klass static class StaticNestedClass { void display() { System.out.println("Inside StaticNestedClass."); // Ei pääse otse outerField-ile } } // Sisemine klass class InnerClass { void display() { System.out.println("Inside InnerClass. outerField: " + outerField); // Juurdepääs outerField-ile } } } -
Rekordklassid (Record - alates Java 14)
- Deklareeritakse sõnaga
record. - Mõeldud andmete salvestamiseks. Kompilator automaatselt genereerib konstruktorit, juurdepääsumeetodid (
accessor methods),equals(),hashCode()jatoString(). - Rekordiväljad on automaatselt
final.
// Rekord, mis esindab punkti 2D ruumis record Point(int x, int y) { // Kompilator genereerib konstruktorit, meetodid x(), y(), equals(), hashCode(), toString() } - Deklareeritakse sõnaga