Класове и обекти в Java
В Java класовете и обектите формират основата на обектно-ориентираното програмиране (ООП). Те помагат за моделиране на обекти от реалния свят и организират кода по структуриран начин.
- Класът е план, използван за създаване на обекти, които споделят общи свойства и поведение.
- Обектът е екземпляр на клас. Той представлява конкретен обект, създаден от шаблона на класа.
Например Куче е клас Tommy е обект от този клас.
Класове и обекти (тук кучето е класът, а Боби е обектът) Java клас
Класът е план, който дефинира данни и поведение за обекти. Той групира свързани полета и методи в една единица. Паметта за неговите членове се разпределя само при създаване на обект.
- Действа като шаблон за създаване на обекти със споделена структура.
- Не заема памет за полета до инстанциране.
- Може да съдържа полета, методи, конструктори, вложени класове и интерфейси.
class Student { int id ; String n ; public Student ( int id String n ) { this . id = id ; this . n = n ; } } public class Main { public static void main ( String [] args ) { Student s1 = new Student ( 10 'Alice' ); System . out . println ( s1 . id ); System . out . println ( s1 . n ); } }
Изход
10 Alice
Java обекти
Обектът е екземпляр на клас, създаден за достъп до неговите данни и операции. Всеки обект притежава собствено състояние.
- състояние : Стойности, съхранени в полета.
- Поведение : Действия, дефинирани чрез методи.
- Идентичност : Разграничава един обект от друг.
Обектите отразяват предмети от реалния свят, като клиентски продукт или кръг. Непримитивните обекти се съхраняват в купчината, докато техните препратки остават в стека.
Java обекти (пример за кучета) Създаване на обект
Създаването на обект е известно като инстанциране. Всички екземпляри на клас споделят структура и поведение, като същевременно съхраняват различни стойности на състоянието.
Декларация на Java обект Декларация:
Куче туфи;
Това само декларира препратка. Обектът не е създаден и референцията е нула.
Инициализация:
tuffy = ново куче ('Tuffy' 'Papillon' 5 'White');
Инициализация Операторът new разпределя памет и извиква конструктора.
Пример: Дефиниране и използване на клас
Java public class Dog { String name ; String breed ; int age ; String color ; public Dog ( String name String breed int age String color ) { this . name = name ; this . breed = breed ; this . age = age ; this . color = color ; } public String getName () { return name ; } public String getBreed () { return breed ; } public int getAge () { return age ; } public String getColor () { return color ; } @Override public String toString () { return 'Name is: ' + name + 'nBreed age and color are: ' + breed + ' ' + age + ' ' + color ; } public static void main ( String [] args ) { Dog tuffy = new Dog ( 'tuffy' 'papillon' 5 'white' ); System . out . println ( tuffy ); } }
Изход
Name is: tuffy Breed age and color are: papillon 5 white
Забележка: Всеки клас има поне един конструктор. Ако нито един не е дефиниран, Java предоставя конструктор без аргументи по подразбиране, който извиква родителския конструктор.
Инициализирайте обекта с помощта на метод/функция
Java public class Geeks { static String name ; static float price ; static void set ( String n float p ) { name = n ; price = p ; } static void get () { System . out . println ( 'Software name is: ' + name ); System . out . println ( 'Software price is: ' + price ); } public static void main ( String [] args ) { Geeks . set ( 'Visual Studio' 0.0f ); Geeks . get (); } }
Изход
Software name is: Visual Studio Software price is: 0.0
Начини за създаване на обект в Java
Java поддържа четири стандартни подхода.
1. Използване на нова ключова дума
Най-директният начин за създаване на обект.
Java // creating object of class Test Test t = new Test ();
2. Използване на отражение
Използва се за динамично зареждане на клас, както се вижда в рамки като Spring.
Java class Student { public Student () {} } public class Main { public static void main ( String [] args ) { try { Class > c = Class . forName ( 'Student' ); Student s = ( Student ) c . getDeclaredConstructor (). newInstance (); System . out . println ( s ); } catch ( Exception e ) { e . printStackTrace (); } } }
Изход
Student@1dbd16a6
3. Използване на метода clone().
clone() създава копие на съществуващ обект. Класът трябва да имплементира Cloneable.
Java class Geeks implements Cloneable { String name = 'GeeksForGeeks' ; @Override protected Object clone () throws CloneNotSupportedException { return super . clone (); } public static void main ( String [] args ) { try { Geeks g1 = new Geeks (); Geeks g2 = ( Geeks ) g1 . clone (); System . out . println ( g2 . name ); } catch ( Exception e ) { e . printStackTrace (); } } }
Изход
GeeksForGeeks
4. Използване на десериализация
Десериализацията е техника за четене на обект от запазеното състояние във файл. Обектът се пресъздава от съхранен поток от байтове.
Обърнете се към Сериализация/де-сериализация в Java .
Java import java.io.* ; class Student implements Serializable { private String name ; public Student ( String name ) { this . name = name ; } public String toString () { return 'Student: ' + name ; } } public class Main { public static void main ( String [] args ) { try ( ObjectOutputStream out = new ObjectOutputStream ( new FileOutputStream ( 'student.ser' ))) { out . writeObject ( new Student ( 'Alice' )); } catch ( IOException e ) { e . printStackTrace (); } try ( ObjectInputStream in = new ObjectInputStream ( new FileInputStream ( 'student.ser' ))) { Student s = ( Student ) in . readObject (); System . out . println ( s ); } catch ( Exception e ) { e . printStackTrace (); } } }
Изход
Student: Alice
Една единствена препратка може да сочи към различни обекти по различно време.
Java Test test = new Test (); test = new Test ();
При наследяването е обичайно да се използва родителска референция за дъщерни обекти.
Java Animal obj = new Dog (); obj = new Cat ();
Нереферираните обекти стават допустими за събиране на отпадъци.
Анонимни обекти
Анонимните обекти се създават без препратка и се използват незабавно за еднократни операции.
- Няма референтна променлива: обектът не може да се използва повторно.
- Създаден и използван моментално спестява памет за краткотрайни задачи.
- Често срещано при обработка на събития (напр. кликвания върху бутони).
new Dog ( 'Max' 'Labrador' 3 'Black' ). getName ();
Често срещано при обработката на събития в потребителския интерфейс.
Създаване на тест