Junior
Javaда кандай класстардын түрлөрү бар?
sobes.tech AI
AIден жооп
- Жалпы (регулярдүү / такталган) класстар: Алар инстанцияланат, талаалары, ыкмалары, конструкторлору болот.
- Абстракттуу класстар: Түздөн-түз инстанцияланбайт. Алар абстракттуу ыкмаларды (ишке ашырылбаган) жана жөнөкөй ыкмаларды камтышы мүмкүн. Төмөнкү класстар үчүн жалпы өзгөчөлүктөрдү аныктоо үчүн колдонулат.
abstract class AbstractClass { abstract void abstractMethod(); // Абстракттуу ыкма void regularMethod() { System.out.println("Жалпы ыкма"); } } - Ички класстар (nested classes): Башка класс ичинде жарыяланат. Алар:
- Статикалык ички класстар (static nested classes): Тышкы класстын статикалык эмес мүчөлөрүнө кире албайт. Тышкы класстын экземплярсиз түзүлөт.
class OuterClass { static class StaticNestedClass { // ... } } - Ички класстар (inner classes): Бардык мүчөлөргө, анын ичинде жеке мүчөлөргө да, кире алат. Тышкы класстын экземплярине байланыштуу.
class OuterClass { class InnerClass { // OuterClassтин мүчөлөрүнө кирет } } - Жергиликтүү класстар (local classes): Метода, циклде же if блогунда жарыяланат. Аларга кирүү чектелген алардын жарыяланган аймакка.
class OuterClass { void someMethod() { class LocalClass { // Жергиликтүү жарыяланган } LocalClass obj = new LocalClass(); } } - Анонимдүү класстар (anonymous classes): Аты жок, бир эле учурда жарыялоо же инстанциялоо менен түзүлөт. Бир жолу колдонуу үчүн.
interface MyInterface { void myMethod(); } MyInterface anon = new MyInterface() { @Override public void myMethod() { System.out.println("Анонимдүү класс"); } };
- Статикалык ички класстар (static nested classes): Тышкы класстын статикалык эмес мүчөлөрүнө кире албайт. Тышкы класстын экземплярсиз түзүлөт.
- Маалыматтар сактоочу класстар (records) (Java 14төн баштап): Өзгөрбөс класстарды жарыялоо үчүн компакт синтаксис, маалыматтарды сактоо үчүн арналган (POJO):
record Person(String name, int age) { // Автоматтык түрдө генерацияланган конструктор, геттерлер, equals(), hashCode(), toString() }