Сравнителна таблица
Основа за сравнение | клас | интерфейс |
---|---|---|
Основен | Клас се създава за създаване на обекти. | Интерфейсът никога не може да бъде инстанциран, тъй като методите не могат да изпълняват никакви действия по извикването. |
Ключова дума | клас | интерфейс |
Спецификатор за достъп | Членовете на даден клас могат да бъдат частни, публични или защитени. | Членовете на интерфейса са винаги публични. |
методи | Методите на даден клас са дефинирани за извършване на конкретно действие. | Методите в интерфейса са чисто абстрактни. |
Прилагане / Удължи | Един клас може да реализира произволен брой интерфейс и може да разшири само един клас. | Един интерфейс може да разшири няколко интерфейса, но не може да реализира всеки интерфейс. |
конструктор | Един клас може да има конструктори за инициализиране на променливите. | Един интерфейс никога не може да има конструктор, тъй като едва ли има някаква променлива, която да се инициализира. |
Определение за клас
Класът е най-важният аспект на Java програмирането, без да можете да изпълнявате Java програма. Клас създава референтни типове и тези референтни типове се използват за създаване на обекти. Класът има подпис и тяло. Подписът на даден клас има името на класа и информацията, която указва дали класът е наследил друг клас. Тялото на класа има полета и методи, които работят в тези полета. Класът се създава с класа на ключовите думи. Позволява ни да видим как да обявим клас.
class class_name {/ * fields ... methods * /}
Когато клас се инстанцира, всеки създаден обект съдържа копие от полета и методи с тях. Полетата и членовете, декларирани вътре в класа, могат да бъдат статични или нестатични. Стойността на статичните членове е постоянна за всеки обект, докато нестатичните членове се инициализират от всеки обект по различен начин в зависимост от неговото изискване.
Членовете на класа имат спецификатори за достъп, които определят видимостта и достъпността на членовете до потребителя или подкласите. Спецификаторите за достъп са публични, частни и защитени. Един клас може да се наследи от друг клас, използвайки спецификатора за достъп, който ще реши видимостта на членовете на суперкласа (наследения клас) в подклас (наследяващ клас). Така класът изпълнява концепцията за скриване на данни и капсулиране в обектно ориентирано програмиране.
Дефиниция на интерфейс
Интерфейсът също е сред референтните типове, определени в Java. Значението на интерфейса е, че в Java един клас може да наследи само един клас. За да се избегне това ограничение, дизайнерите на Java въведоха концепция за интерфейс. Интерфейсът е синтактично подобен на клас, но липсва в декларацията на полето и методите вътре в интерфейса нямат реализация. Интерфейсът е деклариран с помощта на интерфейс за ключови думи. Нека да видим декларацията за интерфейс.
интерфейс interface_name {тип var_name = стойност; тип метод1 (списък на параметрите); тип метод2 (списък с параметри);, , }
Един интерфейс не дефинира никакъв метод, деклариран вътре в него, защото няма полета за работа. Само защото всеки метод вътре в интерфейса не изпълнява никакви действия, интерфейсът никога не може да бъде инстанциран. Ако интерфейсът има някакъв член на полето, той трябва да бъде инициализиран в момента на декларирането им. Един интерфейс никога не съдържа никакви конструктори, тъй като липсва в членовете на полето, за да се инициализира. Така че, интерфейсът само дефинира какво трябва да направи един клас, вместо как трябва да го прави.
Веднъж създаден интерфейс може да бъде реализиран с произволен брой класове, използвайки инструменти за ключови думи. Но класовете, изпълняващи интерфейс, трябва да дефинират всички методи вътре в интерфейса. Един интерфейс може също да наследи друг интерфейс, използвайки ключова дума expand. Ако един клас реализира интерфейс, който разширява друг интерфейс. Тогава един клас трябва да дефинира методите на двата интерфейса, които се появяват във веригата. Методите вътре в интерфейса трябва винаги да са публични, тъй като трябва да бъдат достъпни от класовете, които ги прилагат.
Ключови разлики между клас и интерфейс в Java
- Класът може да бъде инстанциран чрез създаване на неговите обекти. Интерфейсът никога не е инстанциран, тъй като методите, декларирани в интерфейс, са абстрактни и не изпълняват никакви действия, така че няма смисъл да се създава интерфейс.
- Клас се декларира с класа на ключовата дума. По същия начин се създава интерфейс с помощта на интерфейс за ключови думи.
- Членовете на даден клас могат да имат спецификатор за достъп като публичен, частен, защитен. Но членовете на интерфейса са винаги публични, тъй като трябва да бъдат достъпни от класовете, които ги прилагат.
- Методите вътре в класа се дефинират, за да се извърши действие върху полетата, декларирани в класа. Тъй като интерфейсът липсва в декларирането на полета, методите вътре в интерфейса са чисто абстрактни.
- Един клас може да реализира произволен брой интерфейси, но може да разшири само един супер клас. Един интерфейс може да разшири произволен брой интерфейси, но не може да реализира всеки интерфейс.
- Един клас има конструктори, определени вътре в него, за да се инициализира променливата. Но интерфейсът няма никакви конструктори, тъй като няма полета, които да се инициализират. Полетата на интерфейса се инициализират само по време на декларацията.
Заключение:
И двата класа и интерфейса имат своето значение. Клас се използва, когато трябва да определим как ще се изпълнява задачата. Интерфейс се използва, когато трябва да знаем каква задача трябва да се направи.