/
Вопросы и ответы
/
Java
/

Как унаследовать класс в java

Как унаследовать класс в java

4 года назад

Человек-Молекула

Ответы

0

Разберем на примере:

public class Program{
      
    public static void main(String[] args) {
             
        Person tom = new Person("Tom");
        tom.display();
        Employee sam = new Employee("Sam");
        sam.display();
    }
}
class Person {
      
    String name;
    public String getName(){ return name; }
      
    public Person(String name){
      
        this.name=name;
    }
   
    public void display(){
          
        System.out.println("Name: " + name);
    }
}
class Employee extends Person{
    public  Employee(String name){
        super(name);    // если базовый класс определяет конструктор
                        //  то производный класс должен его вызвать
    }
}

Чтобы объявить один класс наследником от другого, надо использовать после имени класса-наследника ключевое слово extends, после которого идет имя базового класса. Для класса Employee базовым является Person, и поэтому класс Employee наследует все те же поля и методы, которые есть в классе Person.

Если в базовом классе определены конструкторы, то в конструкторе производного классы необходимо вызвать один из конструкторов базового класса с помощью ключевого слова super. Например, класс Person имеет конструктор, который принимает один параметр. Поэтому в классе Employee в конструкторе нужно вызвать конструктор класса Person. То есть вызов super(name) будет представлять вызов конструктора класса Person.

При вызове конструктора после слова super в скобках идет перечисление передаваемых аргументов. При этом вызов конструктора базового класса должен идти в самом начале в конструкторе производного класса. Таким образом, установка имени сотрудника делегируется конструктору базового класса.

Производный класс имеет доступ ко всем методам и полям базового класса (даже если базовый класс находится в другом пакете) кроме тех, которые определены с модификатором private. При этом производный класс также может добавлять свои поля и методы:

public class Program{
      
    public static void main(String[] args) {
             
        Employee sam = new Employee("Sam", "Microsoft");
        sam.display();  // Sam
        sam.work();     // Sam works in Microsoft
    }
}
class Person {
      
    String name;
    public String getName(){ return name; }
      
    public Person(String name){
      
        this.name=name;
    }
   
    public void display(){
          
        System.out.println("Name: " + name);
    }
}
class Employee extends Person{
  
    String company;
      
    public Employee(String name, String company) {
      
        super(name);
        this.company=company;
    }
    public void work(){
        System.out.printf("%s works in %s \n", getName(), company);
    }
}

3 года назад

Ilnaz Kamalov