- Objekt v Javě
- Třída v Javě
- Proměnná instance v Javě
- Metoda v Javě
- Příklad objektu a třídy, která vede záznamy o studentovi
- Anonymní objekt
Na této stránce se seznámíme s objekty a třídami Java. V technice objektově orientovaného programování navrhujeme program pomocí objektů a tříd.
Objekt v Javě je fyzická i logická entita, zatímco třída v Javě je pouze logická entita.
Co je objekt v Javě
Entita, která má stav a chování, je známá jako objekt, např. židle, kolo, fix, pero, stůl, auto atd. Může být fyzická nebo logická (hmotná a nehmotná). Příkladem nehmotného předmětu je bankovní systém.
Objekt má tři vlastnosti:
Například pero je objekt. Jmenuje se Reynolds; barva je bílá, známá jako její stav. Používá se k psaní, takže psaní je jeho chování.
Objekt je instancí třídy. Třída je šablona nebo plán, ze kterého se vytvářejí objekty. Objekt je tedy instancí (výsledkem) třídy.
Definice objektů:
- Objekt je entita reálného světa .
- Objekt je runtime entita .
- Objekt je entita, která má stav a chování .
- Objekt je instance třídy .
Co je třída v Javě
Třída je skupina objektů, které mají společné vlastnosti. Je to šablona nebo plán, ze kterého se vytvářejí objekty. Je to logická entita. Nemůže to být fyzické.
Třída v Javě může obsahovat:
Syntaxe pro deklaraci třídy:
class { field; method; }
Proměnná instance v Javě
Proměnná, která je vytvořena uvnitř třídy, ale mimo metodu, je známá jako proměnná instance. Proměnná instance nezíská paměť v době kompilace. Získává paměť za běhu, když je vytvořen objekt nebo instance. Proto je známá jako proměnná instance.
Metoda v Javě
V Javě je metoda jako funkce, která se používá k odhalení chování objektu.
Výhoda metody
- Znovupoužitelnost kódu
- Optimalizace kódu
nové klíčové slovo v Javě
Nové klíčové slovo se používá k alokaci paměti za běhu. Všechny objekty získávají paměť v oblasti paměti haldy.
Příklad objektu a třídy: hlavní v rámci třídy
V tomto příkladu jsme vytvořili třídu Student, která má dva datové členy id a name. Vytváříme objekt třídy Student pomocí nového klíčového slova a tiskneme hodnotu objektu.
Zde vytváříme metodu main() uvnitř třídy.
Soubor: 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); } }Otestujte to hned
Výstup:
0 null
Příklad objektu a třídy: hlavní mimo třídu
Při vývoji v reálném čase vytváříme třídy a používáme je z jiné třídy. Je to lepší přístup než ten předchozí. Podívejme se na jednoduchý příklad, kde máme metodu main() v jiné třídě.
npm clean cache force
Můžeme mít více tříd v různých souborech Java nebo v jednom souboru Java. Pokud definujete více tříd v jednom zdrojovém souboru Java, je dobré uložit název souboru s názvem třídy, který má metodu main().
Soubor: 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); } }Otestujte to hned
Výstup:
0 null
3 způsoby inicializace objektu
Existují 3 způsoby, jak inicializovat objekt v Javě.
- Podle referenční proměnné
- Podle metody
- Podle konstruktéra
1) Příklad objektu a třídy: Inicializace pomocí odkazu
Inicializace objektu znamená uložení dat do objektu. Podívejme se na jednoduchý příklad, kdy budeme inicializovat objekt prostřednictvím referenční proměnné.
Soubor: 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 } }Otestujte to hned
Výstup:
101 Sonoo
Můžeme také vytvořit více objektů a ukládat do nich informace prostřednictvím referenční proměnné.
Soubor: 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); } }Otestujte to hned
Výstup:
101 Sonoo 102 Amit
2) Příklad objektu a třídy: Inicializace pomocí metody
V tomto příkladu vytváříme dva objekty třídy Student a inicializujeme hodnotu pro tyto objekty vyvoláním metody insertRecord. Zde zobrazujeme stav (data) objektů vyvoláním metody displayInformation().
Soubor: 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(); } }Otestujte to hned
Výstup:
111 Karan 222 Aryan
Jak můžete vidět na obrázku výše, objekt získává paměť v oblasti paměti haldy. Referenční proměnná odkazuje na objekt přidělený v oblasti paměti haldy. Zde jsou s1 a s2 obě referenční proměnné, které odkazují na objekty alokované v paměti.
3) Příklad objektu a třídy: Inicializace pomocí konstruktoru
O konstruktorech v Javě se dozvíme později.
Příklad objektu a třídy: Zaměstnanec
Podívejme se na příklad, kde vedeme záznamy o zaměstnancích.
Soubor: 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(); } }Otestujte to hned
Výstup:
101 ajeet 45000.0 102 irfan 25000.0 103 nakul 55000.0
Příklad objektu a třídy: Obdélník
Je uveden další příklad, který udržuje záznamy třídy Rectangle.
Soubor: 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(); } }Otestujte to hned
Výstup:
55 45
Jaké jsou různé způsoby vytvoření objektu v Javě?
Existuje mnoho způsobů, jak vytvořit objekt v jazyce Java. Oni jsou:
- Podle nového klíčového slova
- Metodou newInstance().
- Metodou clone().
- Deserializací
- Tovární metodou atd.
Tyto způsoby vytváření objektů se naučíme později.
Anonymní objekt
Anonymní znamená jednoduše bezejmenný. Objekt, který nemá žádnou referenci, se nazývá anonymní objekt. Lze jej použít pouze v době vytváření objektu.
Pokud musíte objekt použít pouze jednou, anonymní objekt je dobrý přístup. Například:
new Calculation();//anonymous object
Metoda volání přes odkaz:
Calculation c=new Calculation(); c.fact(5);
Volání metody prostřednictvím anonymního objektu
ostrov java
new Calculation().fact(5);
Podívejme se na úplný příklad anonymního objektu v Javě.
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áření více objektů pouze jedním typem
Můžeme vytvořit více objektů pouze jedním typem jako v případě primitiv.
Inicializace primitivních proměnných:
int a=10, b=20;
Inicializace referenčních proměnných:
Rectangle r1=new Rectangle(), r2=new Rectangle();//creating two objects
Podívejme se na pří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(); } }Otestujte to hned
Výstup:
55 45
Příklad reálného světa: Účet
Soubor: 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++){>