Junior
Java'da qanday sinf turlari mavjud?
sobes.tech AI
AIdan javob
Java'da quyidagi asosiy sinf turlari mavjud:
-
Standart Sinf (Standard Class)
- Maydonlar, metodlar, konstruktorlar bo'lishi mumkin.
finaldeb e'lon qilinmagan bo'lsa, boshqa sinflar tomonidan meros olishi mumkin.- Interfeyslarni amalga oshirishi mumkin.
- Erişim modifikatorlari (
public,protected,default,private) bilan e'lon qilinadi.
-
Abstrakt Sinf (Abstract Class)
abstractkalit so'zi bilan e'lon qilinadi.- To'g'ridan-to'g'ri instansiya qilinmaydi.
- Abstrakt metodlar (implementatsiyasiz) va oddiy metodlar bo'lishi mumkin.
- Meros olish uchun mo'ljallangan; subklasslar abstrakt metodlarning implementatsiyasini taqdim etishi kerak.
// Rasm uchun abstrakt sinf abstract class Shape { abstract double area(); // Maydon hisoblash uchun abstrakt metod void display() { // Oddiy metod System.out.println("This is a shape."); } } -
Final Sinf (Final Class)
finalkalit so'zi bilan e'lon qilinadi.- Boshqa sinflar tomonidan meros olinmaydi.
- Sinfni kengaytirishni oldini olish, xavfsizlikni ta'minlash yoki o'zgarmaslikni kafolatlash uchun ishlatiladi.
// Meros olinmaydigan final sinf final class ImmutableString { private final String value; public ImmutableString(String value) { this.value = value; } public String getValue() { return value; } } -
Enumlar (Enum)
- Aniq belgilangan konstantalar to'plamini ifodalash uchun mo'ljallangan maxsus sinf turi.
enumkalit so'zi bilan e'lon qilinadi.- Enum konstantalari odatda
public static finalbo'lib, default qiymatga ega. - Maydonlar, metodlar va konstruktorlar (yashirin
private) bo'lishi mumkin.
// Haftaning kunlari uchun enum enum DayOfWeek { MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY } -
Noma'lum sinflar (Anonymous Class)
- Nomli sinf, bir vaqtning o'zida yaratiladi va instansiya qilinadi.
- Ko'pincha interfeyslarni amalga oshirish yoki sinflarni "yashirin" tarzda kengaytirish uchun ishlatiladi, faqat bir marta foydalanish uchun.
- Aniq konstruktorlar bo'lishi mumkin emas.
// Runnable ni amalga oshiruvchi noma'lum sinf yaratish Runnable r = new Runnable() { @Override public void run() { System.out.println("Running in an anonymous class."); } }; -
Ichki sinflar (Nested Class)
- Boshqa sinf ichida e'lon qilingan sinflar.
- Ikki turga bo'linadi:
- Statik ichki sinflar (Static Nested Class):
staticbilan e'lon qilinadi. Tashqi sinfning statik bo'lmagan a'zolariga to'g'ridan-to'g'ri kirishmaydi. Oddiy sinflar kabi instansiya qilinadi. - Ichki sinflar (Inner Class):
staticbilan e'lon qilinmaydi. Tashqi sinfning barcha a'zolariga, jumladanprivate, kirish huquqiga ega. O'z instansiyasini yaratish uchun tashqi sinfning nusxasi kerak.
- Statik ichki sinflar (Static Nested Class):
// Tashqi sinf class OuterClass { private String outerField = "Outer"; // Statik ichki sinf static class StaticNestedClass { void display() { System.out.println("Inside StaticNestedClass."); // outerField ga to'g'ridan-to'g'ri kirish yo'q } } // Ichki sinf class InnerClass { void display() { System.out.println("Inside InnerClass. outerField: " + outerField); // outerField ga kirish } } } -
Rekord sinflar (Record - Java 14 va undan keyingi versiyalar)
recordkalit so'zi bilan e'lon qilinadi.- Ma'lumotlarni saqlash uchun mo'ljallangan. Kompilyator avtomatik ravishda konstruktor, kirish metodlari (
accessor methods),equals(),hashCode()vatoString()ni generatsiya qiladi. - Record maydonlari avtomatik ravishda
finalbo'ladi.
// 2D makonda nuqtani ifodalovchi rekord record Point(int x, int y) { // Kompilyator konstruktor, x(), y(), equals(), hashCode(), toString() metodlarini generatsiya qiladi }