Ключова разлика – Наследяване срещу интерфейс в Java
Java е език за програмиране, разработен от Sun Microsystems. Java може да се използва за разработване на различни приложения. Това е многопарадигмен език, който поддържа обектно-ориентирано, структурирано и т.н. Основното предимство на Java е, че поддържа обектно-ориентирано програмиране (OOP). Програмистът може да създава класове и обекти. Има четири стълба в OOP. Те са наследство, полиморфизъм, абстракция и капсулиране. Наследяването и интерфейсите са свързани с ООП. Ключовата разлика между наследяването и интерфейса е, че наследяването е за извличане на нови класове от съществуващи класове, а интерфейсът е за прилагане на абстрактни класове и множествено наследяване.
Какво е наследяване в Java?
Наследяването може да постигне повторна използваемост на кода. Наследяването помага да се използват повторно атрибутите и методите на съществуващ клас. Механизмът за извличане на нов клас с помощта на стар клас се нарича наследяване. Старият клас е известен като родителски клас или супер клас. Произведеният клас се нарича дъщерен клас или подклас.
Синтаксисът на наследяването на Java е както следва.
клас име на подклас разширява име на суперклас {
декларация на променлива;
декларация на метод;
}
Концепцията за наследяване може да бъде обяснена чрез следния пример. Да приемем, че има клас, наречен A, както следва.
публичен клас A{
public void sum(){
System.out.println(“Сума”);
}
}
Ако искаме да добавим нов метод, без да променяме съществуващия клас, можем да го направим по следния начин.
публичен клас B{
public void sub(){
System.out.println(“Sub”);
}
}
Програмистът може да използва наследяване, за да използва клас A sum().
публичният клас B разширява клас A{
public void sub(){
System.out.println(“Sub”);
}
}
В основната функция е възможно да се създаде обект от B и да се извика sub(), който принадлежи към клас B и sum(), който принадлежи към клас A, като се използва наследяване.
public static void main(String args){
B obj=нов B();
obj.sub();
obj.sum();
}
Има различни видове наследство. Те са единично наследяване, множествено наследяване, многостепенно наследяване и йерархично наследяване. При единичното наследяване има един базов клас и един производен клас. При многостепенното наследяване има три класа, а именно базов клас, междинен клас и производен клас. Междинният клас наследява от базовия клас, а производният клас наследява от междинния клас. При йерархичното наследяване има един базов клас и много производни класове. Има специален тип, известен като хибридно наследяване. Това е комбинация от два или повече вида наследство.
Фигура 01: Наследяване
В множественото наследяване има много базови класове и един производен клас. Да приемем, че клас A и B са базовите класове. Клас C е производният клас. Ако и двата класа A и B имат един и същ метод и програмистът извиква този метод от производния клас, това ще доведе до проблем с неяснотата. Наследяването на два класа може да причини грешка по време на компилиране. Следователно множественото наследяване не се поддържа в Java. Може да се използва интерфейс за преодоляване на този проблем.
Какво е интерфейс в Java?
Абстракцията е процес на скриване на детайлите на изпълнението и показване само на функционалностите на потребителя. Абстракцията може да бъде постигната с помощта на абстрактни класове или интерфейси. Абстрактен метод е метод без реализация. Клас с поне един абстрактен метод е абстрактен клас. Пример за абстрактен клас е както следва.
абстрактен клас A{
абстрактна празна сума();
}
Да приемем, че има два абстрактни класа като A и B. За да се приложат абстрактни методи на A и B, се създава нов клас C. Тогава клас C трябва да разшири както A, така и B. Но множественото наследяване не се поддържа в Java. Следователно трябва да използвате интерфейси. Интерфейсите могат да се използват за деклариране на методи, но не е възможно да се дефинират методи. Не е възможно да се създаде обект с помощта на интерфейси. Клас C трябва да прилага всички методи в интерфейс A и B.
интерфейс A{
невалидна сума();
}
интерфейс B{
void sub();
}
клас C изпълнява A, B{
public void sum(){
System.out.println(“Сумиране”);
}
public void sub(){
System.out.println(“Изваждане”);
}
}
Сега в основната програма е възможно да се създаде обект на C и да се извикат и двата метода.
public static void main (String args) {
C obj=нов C();
obj.sum();
obj.sub();
}
И така, интерфейсите могат да използват за прилагане на множествено наследяване.
Друга употреба на интерфейси е, че осигурява сигурност. Вижте кода по-долу.
интерфейс A {
недействителна сума ();
}
клас B прилага A {
публична невалидна сума () {
System.out.println(“Сумиране”);
}
публично невалидно умножение () {
System.out.println(“Умножение”);
}
}
Когато създавате обект от B, е възможно да извикате и двата метода sum () и multiply (). Ако програмистът иска да ограничи използването на функция multiply (), това е възможно по следния начин.
public static void main(String args){
A obj=нов B();
obj.sum();
}
A obj=нов B(); ще създаде обект. Той е от тип A и паметта е разпределена като B. Възможно е да се извика sum(), но не може да се изпълни multiply(). Това ограничение се извършва с помощта на интерфейси.
Какви са приликите между наследяването и интерфейса в Java?
- И двете концепции са свързани с обектно-ориентираното програмиране
- И двете представляват IS-A връзка.
Каква е разликата между наследяване и интерфейс в Java?
Наследяване срещу интерфейс в Java |
|
Наследяването е ООП концепция за извличане на нови класове от съществуващите класове. | Интерфейсът е механизъм в ООП за прилагане на абстракция и множествено наследяване. |
Употреба | |
Наследяването осигурява повторно използване на кода. | Интерфейсите осигуряват абстракция и множествено наследяване. |
Резюме – Наследяване срещу интерфейс в Java
Java е многопарадигмен език за програмиране, който поддържа обектно-ориентирано програмиране. Наследяването и интерфейсите са свързани с обектно-ориентираното програмиране. Разликата между наследяване и интерфейс е, че наследяването е за извличане на нови класове от съществуващи класове, а интерфейсите е за прилагане на абстрактни класове и множествено наследяване.
Изтеглете PDF версията на наследяване срещу интерфейс в Java
Можете да изтеглите PDF версия на тази статия и да я използвате за офлайн цели според бележката за цитиране. Моля, изтеглете PDF версия тук Разлика между наследяване и интерфейс в Java