Наследование в Java: класс и интерфейс
Наследование в java - это простое и мощное свойство в объектно-ориентированной концепции, оно позволяет переписать атрибуты и методы родительского класса в дочерний класс, и таким образом другой подкласс также может наследоваться от дочернего класса. Java использует это свойство во всех классах.Ключевое слово, используемое для наследования в java extends. Множественное наследование запрещено, но разрешено для interfaces.
Класс объекта
При программировании мы замечаем, что методы повторяются везде, например: toObject(), equals(), wait()... и так далее. Это связано с тем, что в java все классы наследуются от суперкласса. Объект который является корнем всей иерархии.![]() |
Все классы наследуются от Object |
Example
В этом примере мы объявили класс person с атрибутами name и address. От Персоны наследуются оба подкласса: первый класс директор и второй класс Сотрудник, который имеет в качестве дополнительного атрибута salary.
class Personnote:
{
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= "адрес";
}
}
Дочерний класс наследует объявленные члены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(){};
}
Ключевое слово super также используется для вызова методов более высокого класса. Вот пример:
class Ingenieur_reseaux extends EmployeeБез super метод design(), объявленный в конструкторе, Ingénieur_réseaux будет вызван вместо метода design(), объявленного в engineer, поэтому для обращения к родительскому методу нужно добавить ключевое слово super.
{
public Ingenieur_reseaux ()
{
super("name","address",3100);
}
public void concevoir(){
super.concevoir();
System.out.println("Я спроектировал сетевую архитектуру компании");
}
}
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();
}
}