Класове и обекти в Java PDF

Document Details

ElegantSerpentine3297

Uploaded by ElegantSerpentine3297

Technical University of Varna

Tags

Java programming object-oriented programming classes and objects computer science

Summary

This document is lecture notes on classes and objects in Java. It covers basic concepts, definitions, and examples. There are no questions or exercises provided.

Full Transcript

Класове и обекти в Java В Java класовете и обектите са основни концепции на обектно-ориентираното програмиране (ООП), които се използват за представяне на концепции и обекти от реалния свят. Класът представлява група от обекти с подобни свойства и поведение. Например животинският ти...

Класове и обекти в Java В Java класовете и обектите са основни концепции на обектно-ориентираното програмиране (ООП), които се използват за представяне на концепции и обекти от реалния свят. Класът представлява група от обекти с подобни свойства и поведение. Например животинският тип Куче е клас, докато определено куче на име Сара е обект от класа Куче. Java класове Клас в Java е шаблон за създаване на набор от обекти, които споделят общи характеристики/поведение и общи свойства/атрибути. Това е дефиниран от потребителя или прототип, от който се създават обекти. Класове и обекти в Java Свойства на Java класове Класът не е обект от реалния свят. Това е просто шаблон или план или прототип, от който се създават обекти. Класът не заема памет. Класът е група от променливи от различни типове данни и група от методи. Един клас в Java може да съдържа: Свойства (Data member) Метод Конструктор Вложен клас (Nested Class) Интерфейс Класове и обекти в Java Декларация на клас в Пример за Java клас Java class Student { access_modifier class Output // data members { int id; 0 null data member; String name; method; public static void main(String args[]) constructor; { nested class; // creating an object of Student interface; Student s1 = new Student(); } System.out.println(s1.id); System.out.println(s1.name); } } Класове и обекти в Java Като цяло декларациите на класове могат да включват следните компоненти: Модификатори: Клас може да бъде публичен или да има достъп по подразбиране. Class ключова дума: class ключова дума се използва за създаване на клас. Име на класа: Името трябва да започва с начална буква (главна според конвенцията). Суперклас (ако има такъв): Името на родителя на класа (суперклас), ако има такъв, предшествано от ключовата дума extends. Един клас може да разшири (подклас) само един родител. Интерфейси (ако има такива): разделен със запетаи списък на интерфейси, реализирани от класа, ако има такива, предшестван от ключовата дума implements. Един клас може да реализира повече от един интерфейс. Тяло: Тялото на класа е оградено със скоби, { }. Класове и обекти в Java Java обекти Обект в Java е основна единица на обектно-ориентираното програмиране и представлява обекти от реалния живот. Обектите са инстанции на клас, които са създадени, за да използват атрибутите и методите на класа. Типичната Java програма създава много обекти, които взаимодействат чрез извикване на методи. Един обект се състои от: Състояние: Представено е чрез атрибути на обект. Той също така отразява свойствата на даден обект. Поведение: Представено е от методите на даден обект. Той също така отразява реакцията на обект с други обекти. Идентичност: дава уникално име на обект и позволява на един обект да взаимодейства с други обекти. Класове и обекти в Java Деклариране на обекти (инстанциране на клас) Когато се създаде обект от клас, се казва, че класът е инстанциран. Всички инстанции споделят атрибутите и поведението на класа. Но стойностите на тези атрибути, т.е. състоянието са уникални за всеки обект. Един клас може да има произволен брой инстанции. Инициализиране на Java обект Операторът new инстанцира клас, като заделя памет за нов обект и връща препратка към тази памет. Операторът new също извиква конструктора на класа. Класове и обекти в Java Начини за създаване на обект от клас  използвайки ключова дума new  използвайки newInstance() метода на класа Class  използвайки метод clone()  използвайки deserialization  използвайки метод newInstance() на клас Constructor  Използване на ключова дума new. Това е най-често срещаният и общ начин за създаване на обект в Java. Пример: // creating object of class Test Test t = new Test(); Класове и обекти в Java  използвайки метода newIstance() метода на класа Class: Методът newInstance() на класа Class също се използва за създаване на обект. Той извиква конструктора по подразбиране, за да създаде обекта. Той връща новосъздадена инстанцияна класа. Той вътрешно използва метода newInstance() на класа Constructor. // creating object of class Test Test obj = (Test)cls.newInstance(); Работи само когато знаем името на класа и класът има публичен конструктор по подразбиране. Класове и обекти в Java  използвайки метод clone() Методът clone() е методът на класа Object. Той създава копие на обект и връща копието. JVM създава нов обект, когато се извика методът clone(). Той копира цялото съдържание на предварително създадения обект в нов обект. Създаването на обект с помощта на метода clone() не извиква никакъв конструктор. За да използваме метода clone() върху обект, трябва да имплементираме Cloneable интерфейс и да дефинираме метода clone() в него. Методът хвърля изключение CloneNotSupportedException, ако класът на обекта не поддържа интерфейса Cloneable. Класове и обекти в Java public class Student implements Cloneable{ int fNom; String name; Student (int fNom,String name){ this.fNom=fNom; this.name=name; Тук създаваме клонинг на съществуващ } обект, а не нов обект. public Object clone() Класът трябва да имплементира throws CloneNotSupportedException{ Cloneable Interface, в противен случай return super.clone(); ще хвърли CloneNotSupportedException. } public static void main(String args[]){ try{ Student s1=new Student(101, "Maria"); Student s2=(Student)s1.clone(); System.out.println(s1.fNom+" "+s1.name); System.out.println(s2.fNom+" "+s2.name); }catch(CloneNotSupportedException c){} } } Класове и обекти в Java  използвайки deserialization Сериализация и десериализация в Java Сериализацията е механизъм за преобразуване на състоянието на обект в поток от байтове. Десериализацията е обратният процес, при който потокът от байтове се използва за пресъздаване на действителния Java обект в паметта. Този механизъм се използва за запазване на обекта. Класове и обекти в Java Създаденият байтов поток е независим от платформата, на която се изпълнява програмата. Така че обектът, сериализиран на една платформа, може да бъде десериализиран на друга платформа. За да се направи Java обект сериализуем, се внедрява интерфейса java.io.Serializable. Класът ObjectOutputStream съдържа метод writeObject() за сериализиране на обект. public final void writeObject(Object obj) throws IOException ObjectInputStream класът съдържа readObject() методза десериализация на обект. public final Object readObject() throws IOException, ClassNotFoundException Класове и обекти в Java Предимства на сериализацията  За запазване на състоянието на обект.  За пренос на обект по мрежа. Само обектите от класове, които имплементират интерфейс java.io.Serializable, могат да бъдат сериализирани. Serializable е маркерен интерфейс (няма член на данните и метод). Използва се за „маркиране“ на Java класове, така че обектите от тези класове да могат да получат определени възможности. Други примери за маркерни интерфейси са: - Cloneable и Remote. Класове и обекти в Java  използвайки метод newInstance() на клас Constructor Чрез метод newInstance() в класа java.lang.reflect.Constructor, който може да се използва за създаване на обекти. В този метод конструктор без аргументи се извиква от метода newInstance() за създаване на обект. Всъщност методът newInstance() на Class вътрешно използва метода newInstance() на класа Constructor. //Създаване на обект от клас Test Constructor constructor = Test.class.getDeclaredConstructor(); Test r = constructor.newInstance(); Класове и обекти в Java Разлика между Java клас и обекти Клас Обект Класът е план на обект. Използва се за Обектът е инстанция на клас създаване на обекти. Не се заделя памет, когато се Паметта се заделя веднага щом бъде декларира клас. създаден обект. Обектът е обект от реалния свят, като Класът е група от подобни обекти. например книга, кола и т.н. Класът е идея за бъдещо създаване на Обектът реално съществува. обекти. Един клас може да бъде деклариран Обектите могат да се създават много само веднъж. пъти според изискванията на задачата. Пример за класа може да бъде Обекти на класа кола могат да бъдат автомобил. BMW, Mercedes, Ferrari и др. Методи в Java Метод в Java е колекция от изрази, които изпълняват някаква специфична задача и връщат резултата на извикващия. Метод на Java също може да изпълни някаква конкретна задача, без да връща нищо. Методите на Java ни позволяват да използваме повторно кода, без да налага да го въвеждаме отново. В Java всеки метод трябва да бъде част от някакъв клас, което е различен от езици като C, C++ и Python. 1. Методът е като функция, той се използва за описание на поведението на обект. 2. Това е набор от кодове, които изпълняват определена задача. ( list_of_parameters) { //body } Методи в Java Декларация на метода Като цяло декларациите на метода имат 6 компонента: 1. Модификатор: Той дефинира типа достъп към метода, т.е. откъде може да бъде достъпен във вашето приложение. В Java има 4 типа спецификатори за достъп. public: Достъпен е във всички класове във вашето приложение. protected: Достъпен е в рамките на класа, в който е дефиниран, и в неговите подкласове. private: Достъпен е само в класа, в който е дефиниран. default: Декларира се/дефинира без използване на модификатор. Той е достъпен в рамките на същия клас и пакет, в който е дефиниран неговият клас. Не е задължителен в синтаксиса. Методи в Java Декларация на метода 2. The return type: Типът данни на стойността, върната от метода или void, ако той не връща стойност. Той е задължителен в синтаксиса. 3. Име на метод: правилата за имената на полетата се прилагат и за имената на методите. Той е задължителен в синтаксиса. 4. Списък с параметри: Разделен със запетаи списък на входните параметри, предшестван от техния тип данни, оградени в скоби (). Ако няма параметри се използват само празни скоби (). Не е задължителен в синтаксиса. 5. Списък с изключения (Exception list): Изключенията, които очаквате от метода да хвърли, като може да бъдат посочени тези изключения. Не е задължително в синтаксиса. 6. Тяло на метода: оградено е между скоби { }. Кодът, който трябва да бъде изпълнен, за да изпълните планираните от вас операции. Не е задължително в синтаксиса. Методи в Java Методи в Java Видове методи в Java В Java има два типа методи: 1. Предварително дефиниран метод В Java предварително дефиниран метод е този, който вече е описан в библиотеките с класове на Java, известен като предварително дефинирани методи. Това са стандартни библиотечни методи или вградени методи. Тези методи могат директно да бъдат използвани като бъдат извикани в програмата по всяко време. 2. Дефиниран от потребителя метод Методът, написан от потребителя или програмиста, е известен като дефиниран от потребителя метод. Тези методи се модифицират според изискванията на текущата задача. Методи в Java Извикване на метод Методът трябва да бъде извикан, за да се използва неговата функционалност. Метод се връща към кода, който го е извикал, когато:  Той изпълни всички изрази в метода  Достига до оператор за връщане (return)  Хвърля изключение import java.io.*; public class Addition { int sum = 0; public int addTwoInt(int a, int b) { sum = a + b; return sum; } public static void main(String[] args) { Addition add = new Addition(); int s = add.addTwoInt(1, 2); System.out.println("Sum of two integer values :" + s); } } Конструктори в Java Конструкторът в Java е специален метод, който се използва за инициализиране на обекти. Конструкторът се извиква, когато се създава обект от клас. Конструкторът може да се използва за задаване на начални стойности за атрибутите на обекта. Конструкторът е блок от кодове, подобни на метода. Извиква се при създаване на инстанция на класа. По време на извикването на конструктора паметта за обекта се заделя в оперативната памета. Конструкторът е специален тип метод, който се използва за инициализиране на обекти. Всеки път, когато се създава обект с помощта на ключовата дума new(), се извиква поне един конструктор. Името на конструктора винаги съвпада с името на класа, към който принадлежи. Конструктори в Java Разлики на Java конструкторите от Java методите 1. Конструкторите трябва да имат същото име като класа, в който са дефинирани. 2. Конструкторите не връщат никакъв тип, докато методите имат върнат тип или void, ако не връщат никаква стойност. 3. Конструкторите се извикват само веднъж по време на създаването на обекта, докато методите могат да бъдат извикани произволен брой пъти. import java.io.*; public class Main { int a; Main() { System.out.println("Default constructor"); a=10; } public static void main(String[] args) { Main NewObj = new Main(); System.out.println(NewObj.a); } } Принципи на наследяване в Java Наследяване в Java Java наследяването е механизмът в Java, чрез който на един клас е позволено да наследи функциите (полета и методи) на друг клас. В Java Inheritance означава създаване на нови класове на базата на съществуващи. Клас, който наследява от друг клас, може да използва повторно методите и полетата на този клас. Освен това може да бъдат добавяни нови полета и методи към класа наследник. Ползи от наследяване в Java? Повторна употреба на код: Кодът, написан в суперкласа, е общ за всички подкласове. Дъщерните класове могат директно да използват кода на родителския клас. Method Overriding: Това е един от начините, по които Java постига полиморфизъм. Абстракция: Концепцията за абстракция, при която не е необходимо да предоставяме всички подробности, се постига чрез наследяване. Абстракцията показва на потребителя само необходимата функционалност. Принципи на наследяване в Java Важни термини, използвани в наследяването на Java Клас: Класът е шаблон, по който могат да се създадат обекти, които споделят общи характеристики/поведение и общи свойства/атрибути. Супер клас/родителски клас: Класът, чиито функции се наследяват, е известен като суперклас (или базов клас, или родителски клас). Подклас/Дъщен клас: Класът, който наследява друг клас, е известен като подклас (или производен клас, разширен клас или дъщерен клас). Подкласът може да добавя свои собствени полета и методи в допълнение към полетата и методите на суперкласа. Повторна употреба (Reusability): Наследяването поддържа концепцията за „повторна употреба“, т.е. когато се създава нов клас и вече има клас, който включва част от кода, от който е необходим за новия клас, се прилага наследяване, с цел повторна употреба на вече съществуващ код. Принципи на наследяване в Java Ключовата дума extends се използва за наследяване в Java. Използването на ключовата дума extends показва, че новият клас е извлечени от съществуващ клас или с други думи, новият клас „разширява“ родителския с нови атрибути и функционалности. class derived-class extends base-class { //methods and fields } Принципи на наследяване в Java import java.io.*; // Base or Super Class class Employee { int salary = 60000; } // Inherited or Sub Class class Engineer extends Employee { int Bonus = 10000; } // Driver Class class Main{ public static void main(String args[]) { Engineer E1 = new Engineer(); System.out.println("Salary : " + E1.salary + "Bonus : " + E1. Bonus); } } Принципи на наследяване в Java Ключовата дума super в Java е референтна променлива, която се използва за препратка към обекти на родителски клас. Необходимо е разбиране на наследяването и полиморфизма, за да се разбере ключовата дума Java super. Използване на super ключова дума в Java  Използване на super с променливи  Използване на super с методи  Използване на super с конструктори Принципи на наследяване в Java Характеристики на ключовата дума super в Java: super се използва за извикване на конструктор на суперклас: Когато е създаден подклас, неговият конструктор трябва да извика конструктора на своя родителски клас. Това се прави с помощта на ключовата дума super(), която извиква конструктора на родителския клас. super се използва за извикване на метод на суперклас: Подкласът може да извика метод, дефиниран в неговия родителски клас, използвайки ключовата дума super. Това е полезно, когато подкласът иска да извика изпълнението на метода от родителския клас. super се използва за достъп до поле на суперклас: Подклас може да има достъп до поле, дефинирано в неговия родителски клас, използвайки ключовата дума super. Принципи на наследяване в Java Характеристики на ключовата дума super в Java: super трябва да е първият оператор в конструктор: Когато се извиква конструктор на суперклас, операторът super() трябва да бъде първият оператор в конструктора на подкласа. super не може да се използва в статичен контекст: ключовата дума super не може да се използва в статичен контекст, като например в статичен метод или инициализатор на статична променлива. super не се изисква за извикване на метод на суперклас: Въпреки че е възможно да се използва ключовата дума super за извикване на метод в родителския клас, това не е задължително. Ако даден метод не е заменен в подкласа, тогава извикването му без ключовата дума super ще извика изпълнението на родителския клас. Принципи на наследяване в Java Използване на super с променливи, когато производен клас и базов клас имат Свойства (атрибути) с едно и също име: class Vehicle { int maxSpeed = 120; } class Car extends Vehicle { int maxSpeed = 180; void display() { System.out.println("Maximum Speed: "+ super.maxSpeed); } } class Test { public static void main(String[] args) Output { Maximum Speed: 120 Car small = new Car(); small.display(); } } Принципи на наследяване в Java class Person { void message() { System.out.println("This is person class\n"); } } class Student extends Person { Използване на super с методи, за да void message() се извика метода на родителския клас, когато { System.out.println("This is student class"); родителският и дъщерният клас имат } едноименни методи. void display() { message(); Output super.message(); This is student class } } This is person class class Test { public static void main(String args[]) { Student s = new Student(); s.display(); } } Принципи на наследяване в Java Използване на super с конструктори за достъп до конструктора на родителския клас. class Person { Person() { System.out.println("Person class Constructor"); } } class Student extends Person { Student() { super(); System.out.println("Student class Constructor"); } } class Test { Output public static void main(String[] args) { Person class Constructor Student s = new Student(); Student class Constructor } }

Use Quizgecko on...
Browser
Browser