- Обект в Java
- Клас в Java
- Променлива на екземпляр в Java
- Метод в Java
- Пример за обект и клас, който поддържа записите на студент
- Анонимен обект
На тази страница ще научим за обектите и класовете на Java. В техниката на обектно-ориентираното програмиране ние проектираме програма, използвайки обекти и класове.
Един обект в Java е физическа, както и логическа единица, докато класът в Java е само логическа единица.
Какво е обект в Java
Субект, който има състояние и поведение, е известен като обект, например стол, велосипед, маркер, химикал, маса, кола и т.н. Той може да бъде физически или логически (материален и нематериален). Пример за нематериален обект е банковата система.
Един обект има три характеристики:
Например Pen е обект. Името му е Рейнолдс; цветът е бял, известен като неговото състояние. Използва се за писане, така че писането е неговото поведение.
Обектът е екземпляр на клас. Класът е шаблон или план, от който се създават обекти. И така, обектът е екземпляр (резултат) на клас.
Дефиниции на обекти:
- Един обект е същност от реалния свят .
- Един обект е обект по време на изпълнение .
- Обектът е субект, който има състояние и поведение .
- Обектът е екземпляр на клас .
Какво е клас в Java
Класът е група от обекти, които имат общи свойства. Това е шаблон или план, от който се създават обекти. Това е логическа единица. Не може да е физическо.
Клас в Java може да съдържа:
Синтаксис за деклариране на клас:
class { field; method; }
Променлива на екземпляр в Java
Променлива, която е създадена вътре в класа, но извън метода, е известна като променлива на екземпляр. Променливата на екземпляра не получава памет по време на компилиране. Той получава памет по време на изпълнение, когато се създава обект или екземпляр. Ето защо е известна като променлива на екземпляр.
Метод в Java
В Java методът е като функция, която се използва за излагане на поведението на обект.
Предимство на метода
- Повторна употреба на кода
- Оптимизация на кода
нова ключова дума в Java
Ключовата дума new се използва за разпределяне на памет по време на изпълнение. Всички обекти получават памет в областта на паметта Heap.
Пример за обект и клас: основен в класа
В този пример създадохме клас Student, който има два члена с данни id и име. Създаваме обекта на класа Student чрез нова ключова дума и отпечатваме стойността на обекта.
Тук създаваме метод main() вътре в класа.
Файл: 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); } }Тествайте сега
Изход:
0 null
Пример за обект и клас: main извън класа
В разработката в реално време ние създаваме класове и ги използваме от друг клас. Това е по-добър подход от предишния. Нека да видим прост пример, където имаме метод main() в друг клас.
остър ъгъл
Можем да имаме множество класове в различни Java файлове или един Java файл. Ако дефинирате няколко класа в един изходен файл на Java, добра идея е да запишете името на файла с името на класа, който има метод main().
Файл: 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); } }Тествайте сега
Изход:
0 null
3 начина за инициализиране на обект
Има 3 начина за инициализиране на обект в Java.
- Чрез референтна променлива
- По метод
- По конструктор
1) Пример за обект и клас: Инициализация чрез препратка
Инициализирането на обект означава съхраняване на данни в обекта. Нека видим прост пример, където ще инициализираме обекта чрез референтна променлива.
Файл: 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 } }Тествайте сега
Изход:
101 Sonoo
Можем също да създадем множество обекти и да съхраняваме информация в тях чрез референтна променлива.
Файл: 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); } }Тествайте сега
Изход:
101 Sonoo 102 Amit
2) Пример за обект и клас: Инициализация чрез метод
В този пример ние създаваме двата обекта от клас Student и инициализираме стойността на тези обекти чрез извикване на метода insertRecord. Тук показваме състоянието (данните) на обектите чрез извикване на метода displayInformation().
Файл: 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(); } }Тествайте сега
Изход:
разлика между лисица и вълк
111 Karan 222 Aryan
Както можете да видите на фигурата по-горе, обектът получава паметта в областта на паметта на купчината. Референтната променлива се отнася до обекта, разпределен в областта на паметта на купчината. Тук s1 и s2 са референтни променливи, които се отнасят до обектите, разпределени в паметта.
3) Пример за обект и клас: Инициализация чрез конструктор
По-късно ще научим за конструкторите в Java.
Пример за обект и клас: Служител
Нека да видим пример, в който поддържаме записи на служители.
Файл: 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(); } }Тествайте сега
Изход:
101 ajeet 45000.0 102 irfan 25000.0 103 nakul 55000.0
Пример за обект и клас: правоъгълник
Даден е друг пример, който поддържа записите на клас Rectangle.
Файл: 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(); } }Тествайте сега
Изход:
55 45
Какви са различните начини за създаване на обект в Java?
Има много начини за създаване на обект в java. Те са:
- По нова ключова дума
- Чрез метода newInstance().
- Чрез метода clone().
- Чрез десериализация
- По фабричен метод и др.
По-късно ще научим тези начини за създаване на обект.
Анонимен обект
Анонимен просто означава безименен. Обект, който няма препратка, е известен като анонимен обект. Може да се използва само по време на създаване на обект.
Ако трябва да използвате обект само веднъж, анонимен обект е добър подход. Например:
new Calculation();//anonymous object
Метод на извикване чрез препратка:
Calculation c=new Calculation(); c.fact(5);
Извикващ метод чрез анонимен обект
new Calculation().fact(5);
Нека видим пълния пример за анонимен обект в 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++){>
Създаване на множество обекти само от един тип
Можем да създадем множество обекти само от един тип, както правим в случай на примитиви.
Инициализация на примитивни променливи:
int a=10, b=20;
Инициализация на референтни променливи:
Rectangle r1=new Rectangle(), r2=new Rectangle();//creating two objects
Да видим примера:
//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(); } }Тествайте сега
Изход:
55 45
Пример от реалния свят: акаунт
Файл: 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++){>