Шта је интерфејс?
Интерфејс је нацрт који се може користити за примену класе. Интерфејс не садржи конкретне методе (методе које имају код). Све методе интерфејса су апстрактне методе.
Интерфејс се не може инстанцирати. Међутим, класе које имплементирају интерфејсе могу бити инстанциране. Интерфејси никад не садрже променљиве инстанце, али могу садржати јавне статичке завршне променљиве (тј. Променљиве константне класе)
Шта је апстрактни час?
Класа која у декларацији садржи апстрактну кључну реч назива се апстрактна класа. Апстрактни часови треба да имају најмање један апстрактни метод. , тј. методе без тела. Може имати више конкретних метода.
Апстрактни часови вам омогућавају да направите нацрте конкретних часова. Али класа наслеђивања треба да примени апстрактну методу.
Апстрактне класе не могу бити инстанциране.
Важни разлози за употребу интерфејса
- Интерфејси се користе за постизање апстракције.
- Дизајниран да подржи динамичку резолуцију метода у току рада
- Помаже вам у постизању лабавог спајања.
- Омогућава вам да одвојите дефиницију методе од хијерархије наслеђивања
Важни разлози за употребу апстрактне наставе
- Апстрактне класе нуде подразумевану функционалност за поткласе.
- Пружа образац за будуће одређене часове
- Помаже вам у дефинисању заједничког интерфејса за његове подкласе
- Апстрактна класа омогућава поновну употребу кода.
Интерфаце Вс. Апстрактни час
Апстрактна класа вам омогућава да направите функционалност коју поткласе могу да примене или замене, док интерфејс дозвољава само да наведете функционалност, али не и да је примените. Класа може проширити само једну апстрактну класу док класа може да имплементира више интерфејса.
Параметри | Интерфејс | Апстрактни час |
---|---|---|
Брзина | Спор | Брзо |
Више наслеђа | Имплементирати неколико интерфејса | Само један апстрактни час |
Структура | Апстрактне методе | Апстрактне и конкретне методе |
Када користити | Будуће унапређење | Да би се избегла независност |
Наслеђивање / примена | Класа може да имплементира више интерфејса | Класа може наследити само једну апстрактну класу |
Подразумевана примена | Док додајете нове ствари на интерфејс, ноћна мора је пронаћи све имплементаторе и имплементирати ново дефинисане ствари. | У случају класе сажетка, можете искористити подразумевану имплементацију. |
Модификатори приступа | Интерфејс нема модификаторе приступа. Све дефинисано унутар интерфејса претпоставља се као јавни модификатор. | Апстрактна класа може имати модификатор приступа. |
Када користити | Боље је користити интерфејс када различите имплементације деле само потпис методе. Полиморфна хијерархија типова вредности. | Требало би га користити када различите имплементације исте врсте деле заједничко понашање. |
Поља података | интерфејс не може садржати поља података. | класа може имати поља података. |
Подразумевано вишеструко наслеђивање | Класа може да имплементира бројне интерфејсе. | Класа наслеђује само једну апстрактну класу. |
Имплементација | Интерфејс је апстрактан тако да не може пружити никакав код. | Апстрактна класа може дати потпун, подразумевани код који треба надјачати. |
Коришћење модификатора приступа | Не можете користити модификаторе приступа за метод, својства итд. | Можете да користите апстрактну класу која садржи модификаторе приступа. |
Употреба | Интерфејси помажу у дефинисању периферних способности класе. | Апстрактна класа дефинише идентитет класе. |
Дефинисана поља | Ниједно поље се не може дефинисати | Апстрактна класа вам омогућава да дефинишете и поља и константе |
Наслеђивање | Интерфејс може наследити више интерфејса, али не може наследити класу. | Апстрактна класа може наследити класу и више интерфејса. |
Конструктор или деструктори | Интерфејс не може да декларише конструкторе или деструкторе. | Апстрактна класа може да декларише конструкторе и деструкторе. |
Ограничење продужења | Може проширити било који број интерфејса. | Може истовремено проширити само један разред или један апстрактни час. |
Апстрактна кључна реч | У апстрактном интерфејсу кључна реч није обавезна за декларисање методе као апстрактне. | У апстрактној класи, кључна реч абстрацт је обавезна за декларисање методе као апстрактне. |
Тип класе | Интерфејс може имати само јавне апстрактне методе. | Апстрактна класа има заштићене и јавне апстрактне методе. |
Пример кода за интерфејс и класу сажетка у Јави
Следи пример кода за креирање интерфејса и апстрактне класе у Јави
Синтакса интерфејса
interface name{//methods}
Пример Јава интерфејса:
interface Pet {public void test();}class Dog implements Pet {public void test() {System.out.println("Interface Method Implemented");}public static void main(String args[]) {Pet p = new Dog();p.test();}}
Синтакса класе сажетка
abstract class name{// code}
Пример апстрактне класе:
abstract class Shape {int b = 20;abstract public void calculateArea();}public class Rectangle extends Shape {public static void main(String args[]) {Rectangle obj = new Rectangle();obj.b = 200;obj.calculateArea();}public void calculateArea() {System.out.println("Area is " + (obj.b * obj.b));}}