- Obiekt w Javie
- Zajęcia w Javie
- Zmienna instancji w Javie
- Metoda w Javie
- Przykład obiektu i klasy przechowującej dokumentację ucznia
- Obiekt anonimowy
Na tej stronie dowiemy się o obiektach i klasach Java. W technice programowania obiektowego projektujemy program wykorzystując obiekty i klasy.
Obiekt w Javie jest bytem zarówno fizycznym, jak i logicznym, podczas gdy klasa w Javie jest tylko bytem logicznym.
Co to jest obiekt w Javie
Byt, który ma stan i zachowanie, nazywany jest obiektem, np. krzesłem, rowerem, markerem, długopisem, stołem, samochodem itp. Może być fizyczny lub logiczny (namacalny i niematerialny). Przykładem obiektu niematerialnego jest system bankowy.
Obiekt ma trzy cechy:
Na przykład Pióro jest przedmiotem. Nazywa się Reynolds; kolor jest biały, co jest określane jako jego stan. Służy do pisania, więc pisanie jest jego zachowaniem.
Obiekt jest instancją klasy. Klasa to szablon lub plan, na podstawie którego tworzone są obiekty. Zatem obiekt jest instancją (wynikiem) klasy.
Definicje obiektów:
- Obiekt jest istota ze świata rzeczywistego .
- Obiekt jest podmiot wykonawczy .
- Obiekt jest jednostka posiadająca stan i zachowanie .
- Obiekt jest instancja klasy .
Co to jest klasa w Javie
Klasa to grupa obiektów mających wspólne właściwości. Jest to szablon lub plan, na podstawie którego tworzone są obiekty. Jest to byt logiczny. To nie może być fizyczne.
Klasa w Javie może zawierać:
Składnia deklarowania klasy:
class { field; method; }
Zmienna instancji w Javie
Zmienna utworzona wewnątrz klasy, ale poza metodą, nazywana jest zmienną instancji. Zmienna instancji nie pobiera pamięci w czasie kompilacji. Pobiera pamięć w czasie wykonywania, gdy tworzony jest obiekt lub instancja. Dlatego nazywa się ją zmienną instancji.
Metoda w Javie
W Javie metoda przypomina funkcję służącą do ujawniania zachowania obiektu.
Zaleta metody
- Możliwość ponownego użycia kodu
- Optymalizacja kodu
nowe słowo kluczowe w Javie
Słowo kluczowe new służy do alokacji pamięci w czasie wykonywania. Wszystkie obiekty otrzymują pamięć w obszarze pamięci sterty.
Przykład obiektu i klasy: main w klasie
W tym przykładzie utworzyliśmy klasę Student, która ma dwa elementy danych: identyfikator i nazwę. Tworzymy obiekt klasy Student za pomocą nowego słowa kluczowego i drukujemy wartość obiektu.
Tutaj tworzymy metodę main() wewnątrz klasy.
Plik: 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); } }Przetestuj teraz
Wyjście:
0 null
Przykład obiektu i klasy: main poza klasą
W czasie rzeczywistym tworzymy klasy i używamy ich z innych zajęć. Jest to lepsze podejście niż poprzednie. Zobaczmy prosty przykład, w którym mamy metodę main() w innej klasie.
Numer „eulera” w Javie”
Możemy mieć wiele klas w różnych plikach Java lub w jednym pliku Java. Jeśli zdefiniujesz wiele klas w jednym pliku źródłowym Java, dobrym pomysłem jest zapisanie nazwy pliku z nazwą klasy, która zawiera metodę main().
Plik: 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); } }Przetestuj teraz
Wyjście:
0 null
3 sposoby inicjalizacji obiektu
Istnieją 3 sposoby inicjowania obiektu w Javie.
- Według zmiennej referencyjnej
- Według metody
- Przez konstruktora
1) Przykład obiektu i klasy: Inicjalizacja poprzez referencję
Inicjowanie obiektu oznacza przechowywanie danych w obiekcie. Zobaczmy prosty przykład, w którym zamierzamy zainicjować obiekt poprzez zmienną referencyjną.
Plik: 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 } }Przetestuj teraz
Wyjście:
101 Sonoo
Możemy także tworzyć wiele obiektów i przechowywać w nich informacje poprzez zmienną referencyjną.
Plik: 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); } }Przetestuj teraz
Wyjście:
101 Sonoo 102 Amit
2) Przykład obiektu i klasy: Inicjalizacja metodą
W tym przykładzie tworzymy dwa obiekty klasy Student i inicjujemy wartość tych obiektów, wywołując metodę wstawRecord. Tutaj wyświetlamy stan (dane) obiektów wywołując metodę displayInformation().
Plik: 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(); } }Przetestuj teraz
Wyjście:
111 Karan 222 Aryan
Jak widać na powyższym rysunku, obiekt pobiera pamięć ze sterty. Zmienna referencyjna odnosi się do obiektu przydzielonego w obszarze pamięci sterty. Tutaj s1 i s2 są zmiennymi referencyjnymi, które odnoszą się do obiektów alokowanych w pamięci.
3) Przykład obiektu i klasy: Inicjalizacja poprzez konstruktor
O konstruktorach w Javie dowiemy się później.
Przykład obiektu i klasy: Pracownik
Zobaczmy przykład, w którym prowadzimy ewidencję pracowników.
Plik: 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(); } }Przetestuj teraz
Wyjście:
101 ajeet 45000.0 102 irfan 25000.0 103 nakul 55000.0
Przykład obiektu i klasy: prostokąt
Podano inny przykład przechowujący rekordy klasy Rectangle.
Plik: 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(); } }Przetestuj teraz
Wyjście:
pothineni baran
55 45
Jakie są różne sposoby tworzenia obiektu w Javie?
Istnieje wiele sposobów tworzenia obiektów w Javie. Oni są:
- Według nowego słowa kluczowego
- Za pomocą metody newInstance().
- Metodą clone().
- Przez deserializację
- Metodą fabryczną itp.
Tych sposobów tworzenia obiektów nauczymy się później.
Obiekt anonimowy
Anonimowy oznacza po prostu bezimienny. Obiekt, który nie ma odniesienia, nazywany jest obiektem anonimowym. Można go używać wyłącznie w momencie tworzenia obiektu.
Jeśli musisz użyć obiektu tylko raz, dobrym rozwiązaniem jest obiekt anonimowy. Na przykład:
new Calculation();//anonymous object
Wywołanie metody poprzez referencję:
Calculation c=new Calculation(); c.fact(5);
Wywołanie metody poprzez anonimowy obiekt
new Calculation().fact(5);
Zobaczmy pełny przykład anonimowego obiektu w Javie.
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++){>
Tworzenie wielu obiektów tylko jednego typu
Możemy tworzyć wiele obiektów jednego typu tylko tak, jak to robimy w przypadku prymitywów.
Inicjalizacja zmiennych pierwotnych:
int a=10, b=20;
Inicjalizacja zmiennych referencyjnych:
Rectangle r1=new Rectangle(), r2=new Rectangle();//creating two objects
Zobaczmy przykład:
//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(); } }Przetestuj teraz
Wyjście:
55 45
Przykład ze świata rzeczywistego: konto
Plik: 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++){>