logo

Класове и обекти в Java

В Java класовете и обектите формират основата на обектно-ориентираното програмиране (ООП). Те помагат за моделиране на обекти от реалния свят и организират кода по структуриран начин.

  • Класът е план, използван за създаване на обекти, които споделят общи свойства и поведение.
  • Обектът е екземпляр на клас. Той представлява конкретен обект, създаден от шаблона на класа.

Например Куче е клас Tommy е обект от този клас.

Class_Object_example' title=Класове и обекти (тук кучето е класът, а Боби е обектът)

Java клас

Класът е план, който дефинира данни и поведение за обекти. Той групира свързани полета и методи в една единица. Паметта за неговите членове се разпределя само при създаване на обект.



  • Действа като шаблон за създаване на обекти със споделена структура.
  • Не заема памет за полета до инстанциране.
  • Може да съдържа полета, методи, конструктори, вложени класове и интерфейси.
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' loading='lazy' title=Java обекти (пример за кучета)

Създаване на обект

Създаването на обект е известно като инстанциране. Всички екземпляри на клас споделят структура и поведение, като същевременно съхраняват различни стойности на състоянието.

Деклариране на обекти в Java' loading='lazy' title=Декларация на Java обект

Декларация:

Куче туфи;

Това само декларира препратка. Обектът не е създаден и референцията е нула.

Инициализация:

tuffy = ново куче ('Tuffy' 'Papillon' 5 'White');

Класове-и-обекти-в-java-3-768' loading='lazy' title=Инициализация

Операторът 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
Java
Test test = new Test(); test = new Test(); 

При наследяването е обичайно да се използва родителска референция за дъщерни обекти.

Java
Animal obj = new Dog(); obj = new Cat(); 

Нереферираните обекти стават допустими за събиране на отпадъци.

Анонимни обекти

Анонимните обекти се създават без препратка и се използват незабавно за еднократни операции.

  • Няма референтна променлива: обектът не може да се използва повторно.
  • Създаден и използван моментално спестява памет за краткотрайни задачи.
  • Често срещано при обработка на събития (напр. кликвания върху бутони).
Java
new Dog('Max' 'Labrador' 3 'Black').getName(); 

Често срещано при обработката на събития в потребителския интерфейс.

Създаване на тест