- Objekt v jazyku Java
- Trieda v Jave
- Premenná inštancie v jazyku Java
- Metóda v Jave
- Príklad objektu a triedy, ktorá vedie záznamy o študentovi
- Anonymný objekt
Na tejto stránke sa dozvieme o objektoch a triedach Java. V technike objektovo orientovaného programovania navrhujeme program pomocou objektov a tried.
Objekt v jazyku Java je fyzická aj logická entita, zatiaľ čo trieda v jazyku Java je iba logická entita.
Čo je objekt v Jave
Entita, ktorá má stav a správanie, je známa ako objekt, napr. stolička, bicykel, fixka, pero, stôl, auto atď. Môže byť fyzická alebo logická (hmotná a nehmotná). Príkladom nehmotného predmetu je bankový systém.
Objekt má tri vlastnosti:
Napríklad pero je objekt. Volá sa Reynolds; farba je biela, známa ako jeho stav. Používa sa na písanie, takže písanie je jeho správaním.
Objekt je inštanciou triedy. Trieda je šablóna alebo plán, z ktorého sa vytvárajú objekty. Objekt je teda inštanciou (výsledkom) triedy.
Definície objektu:
- Objekt je entita reálneho sveta .
- Objekt je runtime entita .
- Objekt je entita, ktorá má stav a správanie .
- Objekt je inštancia triedy .
Čo je trieda v jazyku Java
Trieda je skupina objektov, ktoré majú spoločné vlastnosti. Je to šablóna alebo plán, z ktorého sa vytvárajú objekty. Je to logická entita. Nemôže to byť fyzické.
Trieda v jazyku Java môže obsahovať:
Syntax na deklarovanie triedy:
class { field; method; }
Premenná inštancie v jazyku Java
Premenná, ktorá je vytvorená vo vnútri triedy, ale mimo metódy, je známa ako premenná inštancie. Premenná inštancie nezískava pamäť v čase kompilácie. Pri vytváraní objektu alebo inštancie získava pamäť za behu. Preto je známa ako premenná inštancie.
Metóda v Jave
V jazyku Java je metóda ako funkcia, ktorá sa používa na odhalenie správania objektu.
Výhoda metódy
- Opätovná použiteľnosť kódu
- Optimalizácia kódu
nové kľúčové slovo v jazyku Java
Nové kľúčové slovo sa používa na pridelenie pamäte za behu. Všetky objekty získajú pamäť v oblasti pamäte haldy.
Príklad objektu a triedy: hlavný v rámci triedy
V tomto príklade sme vytvorili triedu Študent, ktorá má dva dátové členy id a name. Vytvoríme objekt triedy Študent pomocou nového kľúčového slova a vytlačíme hodnotu objektu.
Tu vytvárame metódu main() vo vnútri triedy.
Súbor: Student.java
//Java Program to illustrate how to define a class and fields //Defining a Student class. class Student{ //defining fields int id;//field or data member or instance variable String name; //creating main method inside the Student class public static void main(String args[]){ //Creating an object or instance Student s1=new Student();//creating an object of Student //Printing values of the object System.out.println(s1.id);//accessing member through reference variable System.out.println(s1.name); } }Vyskúšajte to
Výkon:
0 null
Príklad objektu a triedy: hlavný mimo triedy
Pri vývoji v reálnom čase vytvárame triedy a používame ich z inej triedy. Je to lepší prístup ako predchádzajúci. Pozrime sa na jednoduchý príklad, kde máme metódu main() v inej triede.
mravec vs človek
Môžeme mať viacero tried v rôznych súboroch Java alebo v jednom súbore Java. Ak definujete viacero tried v jednom zdrojovom súbore Java, je dobré uložiť názov súboru s názvom triedy, ktorý má metódu main().
Súbor: TestStudent1.java
//Java Program to demonstrate having the main method in //another class //Creating Student class. class Student{ int id; String name; } //Creating another class TestStudent1 which contains the main method class TestStudent1{ public static void main(String args[]){ Student s1=new Student(); System.out.println(s1.id); System.out.println(s1.name); } }Vyskúšajte to
Výkon:
0 null
3 spôsoby inicializácie objektu
Existujú 3 spôsoby, ako inicializovať objekt v Jave.
- Podľa referenčnej premennej
- Podľa metódy
- Podľa konštruktéra
1) Príklad objektu a triedy: Inicializácia pomocou odkazu
Inicializácia objektu znamená ukladanie údajov do objektu. Pozrime sa na jednoduchý príklad, kde ideme inicializovať objekt cez referenčnú premennú.
Súbor: TestStudent2.java
class Student{ int id; String name; } class TestStudent2{ public static void main(String args[]){ Student s1=new Student(); s1.id=101; s1.name='Sonoo'; System.out.println(s1.id+' '+s1.name);//printing members with a white space } }Vyskúšajte to
Výkon:
101 Sonoo
Môžeme tiež vytvoriť viacero objektov a ukladať do nich informácie prostredníctvom referenčnej premennej.
Súbor: TestStudent3.java
class Student{ int id; String name; } class TestStudent3{ public static void main(String args[]){ //Creating objects Student s1=new Student(); Student s2=new Student(); //Initializing objects s1.id=101; s1.name='Sonoo'; s2.id=102; s2.name='Amit'; //Printing data System.out.println(s1.id+' '+s1.name); System.out.println(s2.id+' '+s2.name); } }Vyskúšajte to
Výkon:
101 Sonoo 102 Amit
2) Príklad objektu a triedy: Inicializácia pomocou metódy
V tomto príklade vytvárame dva objekty triedy Student a inicializujeme hodnotu pre tieto objekty vyvolaním metódy insertRecord. Tu zobrazujeme stav (údaje) objektov vyvolaním metódy displayInformation().
Súbor: TestStudent4.java
class Student{ int rollno; String name; void insertRecord(int r, String n){ rollno=r; name=n; } void displayInformation(){System.out.println(rollno+' '+name);} } class TestStudent4{ public static void main(String args[]){ Student s1=new Student(); Student s2=new Student(); s1.insertRecord(111,'Karan'); s2.insertRecord(222,'Aryan'); s1.displayInformation(); s2.displayInformation(); } }Vyskúšajte to
Výkon:
111 Karan 222 Aryan
Ako môžete vidieť na obrázku vyššie, objekt dostane pamäť v oblasti pamäte haldy. Referenčná premenná odkazuje na objekt alokovaný v oblasti pamäte haldy. S1 aj s2 sú tu referenčné premenné, ktoré odkazujú na objekty alokované v pamäti.
3) Príklad objektu a triedy: Inicializácia pomocou konštruktora
O konštruktoroch v Jave sa dozvieme neskôr.
Objekt a trieda Príklad: Zamestnanec
Pozrime sa na príklad, kde vedieme záznamy o zamestnancoch.
získať aktuálny dátum v jave
Súbor: TestEmployee.java
class Employee{ int id; String name; float salary; void insert(int i, String n, float s) { id=i; name=n; salary=s; } void display(){System.out.println(id+' '+name+' '+salary);} } public class TestEmployee { public static void main(String[] args) { Employee e1=new Employee(); Employee e2=new Employee(); Employee e3=new Employee(); e1.insert(101,'ajeet',45000); e2.insert(102,'irfan',25000); e3.insert(103,'nakul',55000); e1.display(); e2.display(); e3.display(); } }Vyskúšajte to
Výkon:
101 ajeet 45000.0 102 irfan 25000.0 103 nakul 55000.0
Príklad objektu a triedy: Obdĺžnik
Je uvedený ďalší príklad, ktorý udržiava záznamy triedy Rectangle.
Súbor: TestRectangle1.java
class Rectangle{ int length; int width; void insert(int l, int w){ length=l; width=w; } void calculateArea(){System.out.println(length*width);} } class TestRectangle1{ public static void main(String args[]){ Rectangle r1=new Rectangle(); Rectangle r2=new Rectangle(); r1.insert(11,5); r2.insert(3,15); r1.calculateArea(); r2.calculateArea(); } }Vyskúšajte to
Výkon:
55 45
Aké sú rôzne spôsoby vytvorenia objektu v jazyku Java?
Existuje mnoho spôsobov, ako vytvoriť objekt v jazyku Java. Oni sú:
- Podľa nového kľúčového slova
- Metódou newInstance().
- Metódou clone().
- Deserializáciou
- Továrenskou metódou atď.
Tieto spôsoby vytvárania objektu sa naučíme neskôr.
Anonymný objekt
Anonymný znamená jednoducho bezmenný. Objekt, ktorý nemá žiadnu referenciu, je známy ako anonymný objekt. Dá sa použiť len v čase vytvárania objektu.
Ak musíte objekt použiť iba raz, anonymný objekt je dobrý prístup. Napríklad:
new Calculation();//anonymous object
Spôsob volania cez odkaz:
Calculation c=new Calculation(); c.fact(5);
Volanie metódy cez anonymný objekt
new Calculation().fact(5);
Pozrime sa na úplný príklad anonymného objektu v jazyku Java.
class Calculation{ void fact(int n){ int fact=1; for(int i=1;i<=n;i++){ fact="fact*i;" } system.out.println('factorial is '+fact); public static void main(string args[]){ new calculation().fact(5); calling method with anonymous object < pre> <p>Output:</p> <pre> Factorial is 120 </pre> <a id="objectbyonetype"></a> <h3>Creating multiple objects by one type only</h3> <p>We can create multiple objects by one type only as we do in case of primitives.</p> <p>Initialization of primitive variables:</p> <pre> int a=10, b=20; </pre> <p>Initialization of refernce variables:</p> <pre> Rectangle r1=new Rectangle(), r2=new Rectangle();//creating two objects </pre> <p>Let's see the example:</p> <pre> //Java Program to illustrate the use of Rectangle class which //has length and width data members class Rectangle{ int length; int width; void insert(int l,int w){ length=l; width=w; } void calculateArea(){System.out.println(length*width);} } class TestRectangle2{ public static void main(String args[]){ Rectangle r1=new Rectangle(),r2=new Rectangle();//creating two objects r1.insert(11,5); r2.insert(3,15); r1.calculateArea(); r2.calculateArea(); } } </pre> <span> Test it Now </span> <p>Output:</p> <pre> 55 45 </pre> <h3>Real World Example: Account</h3> <p>File: TestAccount.java</p> <pre> //Java Program to demonstrate the working of a banking-system //where we deposit and withdraw amount from our account. //Creating an Account class which has deposit() and withdraw() methods class Account{ int acc_no; String name; float amount; //Method to initialize object void insert(int a,String n,float amt){ acc_no=a; name=n; amount=amt; } //deposit method void deposit(float amt){ amount=amount+amt; System.out.println(amt+' deposited'); } //withdraw method void withdraw(float amt){ if(amount <amt){ system.out.println('insufficient balance'); }else{ amount="amount-amt;" system.out.println(amt+' withdrawn'); } method to check the balance of account void checkbalance(){system.out.println('balance is: '+amount);} display values an object display(){system.out.println(acc_no+' '+name+' creating a test class deposit and withdraw testaccount{ public static main(string[] args){ a1="new" account(); a1.insert(832345,'ankit',1000); a1.display(); a1.checkbalance(); a1.deposit(40000); a1.withdraw(15000); }} < pre> <span> Test it Now </span> <p>Output:</p> <pre> 832345 Ankit 1000.0 Balance is: 1000.0 40000.0 deposited Balance is: 41000.0 15000.0 withdrawn Balance is: 26000.0 </pre></amt){></pre></=n;i++){>
Vytváranie viacerých objektov iba jedným typom
Môžeme vytvoriť viacero objektov iba jedným typom, ako to robíme v prípade primitív.
Inicializácia primitívnych premenných:
int a=10, b=20;
Inicializácia referenčných premenných:
Rectangle r1=new Rectangle(), r2=new Rectangle();//creating two objects
Pozrime sa na príklad:
//Java Program to illustrate the use of Rectangle class which //has length and width data members class Rectangle{ int length; int width; void insert(int l,int w){ length=l; width=w; } void calculateArea(){System.out.println(length*width);} } class TestRectangle2{ public static void main(String args[]){ Rectangle r1=new Rectangle(),r2=new Rectangle();//creating two objects r1.insert(11,5); r2.insert(3,15); r1.calculateArea(); r2.calculateArea(); } }Vyskúšajte to
Výkon:
55 45
Príklad skutočného sveta: Účet
Súbor: TestAccount.java
//Java Program to demonstrate the working of a banking-system //where we deposit and withdraw amount from our account. //Creating an Account class which has deposit() and withdraw() methods class Account{ int acc_no; String name; float amount; //Method to initialize object void insert(int a,String n,float amt){ acc_no=a; name=n; amount=amt; } //deposit method void deposit(float amt){ amount=amount+amt; System.out.println(amt+' deposited'); } //withdraw method void withdraw(float amt){ if(amount <amt){ system.out.println(\'insufficient balance\'); }else{ amount="amount-amt;" system.out.println(amt+\' withdrawn\'); } method to check the balance of account void checkbalance(){system.out.println(\'balance is: \'+amount);} display values an object display(){system.out.println(acc_no+\' \'+name+\' creating a test class deposit and withdraw testaccount{ public static main(string[] args){ a1="new" account(); a1.insert(832345,\'ankit\',1000); a1.display(); a1.checkbalance(); a1.deposit(40000); a1.withdraw(15000); }} < pre> <span> Test it Now </span> <p>Output:</p> <pre> 832345 Ankit 1000.0 Balance is: 1000.0 40000.0 deposited Balance is: 41000.0 15000.0 withdrawn Balance is: 26000.0 </pre></amt){>=n;i++){>