Класе и објекти у Јави
У Јави класе и објекти чине основу објектно оријентисаног програмирања (ООП). Они помажу моделирању стварних ентитета и организовању кода на структуриран начин.
- Класа је нацрт који се користи за креирање објеката који деле заједничка својства и понашање.
- Објекат је инстанца класе. Представља специфичан ентитет креиран из шаблона класе.
На пример, Пас је класа Томи је објекат те класе.
Класе и објекти (овде је пас класа, а Боби је објекат) Јава Цласс
Класа је нацрт који дефинише податке и понашање објеката. Групише сродне области и методе у једну целину. Меморија за његове чланове се додељује само када је објекат креиран.
- Делује као шаблон за креирање објеката са дељеном структуром.
- Не заузима меморију за поља до инстанцирања.
- Може да садржи поља методе конструкторе угнежђене класе и интерфејсе.
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
Јава објекти
Објекат је инстанца класе креирана за приступ њеним подацима и операцијама. Сваки објекат има своје стање.
- Држава : Вредности ускладиштене у пољима.
- Понашање : Акције дефинисане кроз методе.
- Идентитет : Разликује један објекат од другог.
Објекти одражавају ствари из стварног света као што су производ или круг. Непримитивни објекти се чувају на хрпи док њихове референце остају на стеку.
Јава објекти (пример паса) Инстанција објекта
Креирање објекта је познато као инстанција. Све инстанце класе деле структуру и понашање док чувају различите вредности стања.
Декларација Јава објекта Декларација:
Дог туффи;
Ово само декларише референцу. Објекат није креиран и референца држи нулл.
Иницијализација:
туффи = нев Дог('Туффи' 'Папиллон' 5 'Вхите');
Иницијализација Оператор нев додељује меморију и позива конструктор.
Пример: Дефинисање и коришћење класе
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 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
Начини креирања објеката у Јави
Јава подржава четири стандардна приступа.
1. Коришћење нове кључне речи
Најдиректнији начин за креирање објекта.
Java // creating object of class Test Test t = new Test ();
2. Коришћење рефлексије
Користи се за динамичко учитавање класа као што се види у оквирима као што је Спринг.
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. Коришћење методе цлоне().
цлоне() креира копију постојећег објекта. Класа мора да имплементира Цлонеабле.
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 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 ();
Уобичајено у руковању УИ догађајима.
Креирај квиз