Наследование в Java: класс и интерфейс
Наследование в java - это простое и мощное свойство в объектно-ориентированной концепции, оно позволяет переписать атрибуты и методы родительского класса в дочерний класс, и таким образом другой подкласс также может наследоваться от дочернего класса. Java использует это свойство во всех классах.
Ключевое слово, используемое для наследования в java
extends. Множественное наследование запрещено, но разрешено для interfaces.
Класс объекта
При программировании мы замечаем, что методы повторяются везде, например:
toObject(),
equals(),
wait()... и так далее. Это связано с тем, что в java все классы наследуются от суперкласса.
Объект который является корнем всей иерархии.
 |
Все классы наследуются от Object |
Example
В этом примере мы объявили класс person с атрибутами name и address. От Персоны наследуются оба подкласса: первый класс директор и второй класс Сотрудник, который имеет в качестве дополнительного атрибута salary.

class Person
{
public String name;
публичный Строковый адрес;
}
class Сотрудник продлевает Person
{
int salary ;
public Employee(String name, String address, int salary)
{
this.name=name;
this.address=адрес;
this.salary=salary;
}
}
class Director extends Person
{
public Director()
{
this.name= "name";
this.adresse= "адрес";
}
}
note:
Дочерний класс наследует объявленные члены
protected и
public а также наследует члены
private если он находится в том же пакете, что и родительский class.
Ключевое слово super в java
Класс Person можно расширить, чтобы унаследовать от него в подклассы, учитывая, что в этой компании есть несколько функций: инженер, бухгалтер, секретарь... etc.
class Engineer extends Employee
{
public Engineer()
{
super("name","address",110);
}
public void concevoir(){System.out.println("Я инженер");}
public void developper(){};
}
class Accountant extends Employee
{
public Accountant()
{
this.name= "name";
this.adresse= "адрес";
this.salary = 3000;
}
public void manageAccounts(){};
public void gererLesBilans(){};
}
Мы видим структуру в виде иерархии, это дерево помогает нам понять структуру нашей программы. Разница между двумя классами Engineer и Employee заключается в использовании ключевого слова super в Engineer, которое напрямую вызывает конструктор родительского класса. По умолчанию
super() вызывает производителя без аргументов и
super(p1, p2,...) вызывает конструктор с аргументами.
Ключевое слово super также используется для вызова методов более высокого класса. Вот пример:
class Ingenieur_reseaux extends Employee
{
public Ingenieur_reseaux ()
{
super("name","address",3100);
}
public void concevoir(){
super.concevoir();
System.out.println("Я спроектировал сетевую архитектуру компании");
}
}
Без super метод design(), объявленный в конструкторе, Ingénieur_réseaux будет вызван вместо метода design(), объявленного в engineer, поэтому для обращения к родительскому методу нужно добавить ключевое слово super.
Runtime:
Я инженер
Я спроектировал сетевую архитектуру компании
Наследование интерфейса в java
Множественное наследование разрешено для interfaces.
interface print{
void print();
}
interface display{
void display();
}
interface interfaceIA extends print,display{
void imprimer_afficher();
}
class testIA реализует interfaceIA{
void print(){System.out.println("Printing")};
void display(){System.out.println("Print Complete")};
public static void main(){
testIA test = new testIA();
test.print();
test.display();
}
}