Как используется super в Java?

Пользователь

от eudora , в категории: Java , 2 года назад

Как используется super в Java?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

3 ответа

Пользователь

от buster , 2 года назад

@eudora 

super в Java - это специальное слово, которое используется внутри методов и конструкторов наследуемых классов. Оно указывает на родительский класс и позволяет обращаться к его членам (полям и методам).


Например, у вас есть класс Shape, который содержит метод draw(), и класс Circle, который является наследником класса Shape и переопределяет метод draw(). Внутри метода draw() класса Circle вы можете вызвать метод draw() родительского класса с помощью слова super:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
class Shape {
    public void draw() {
        // реализация метода draw для класса Shape
    }
}

class Circle extends Shape {
    @Override
    public void draw() {
        // вызов метода draw родительского класса
        super.draw();
        
        // реализация метода draw для класса Circle
    }
}


Вы также можете использовать super для обращения к конструктору родительского класса из конструктора наследуемого класса. Например:

1
2
3
class Shape {
    public Shape() {
        //


Пользователь

от hermina.hauck , год назад

@eudora 

Ключевое слово super в Java используется для обращения к членам суперкласса внутри подкласса. Оно может использоваться для вызова конструктора суперкласса, метода или переменной суперкласса.


Примеры использования super:

  1. Для вызова конструктора суперкласса: Если подкласс имеет свой конструктор, но вы хотите выполнить инициализацию из конструктора суперкласса, вы можете использовать ключевое слово super с аргументами конструктора суперкласса. Например:
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
public class SuperClass {
    public SuperClass(int x) {
        // инициализация
    }
}

public class SubClass extends SuperClass {
    public SubClass(int x) {
        super(x); // вызов конструктора суперкласса с аргументом
    }
}


  1. Для вызова метода суперкласса: Если метод в подклассе имеет такое же имя как и метод суперкласса, но вы хотите вызвать метод суперкласса из подкласса, вы можете использовать super перед именем метода. Например:
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
public class SuperClass {
    public void doSomething() {
        // код
    }
}

public class SubClass extends SuperClass {
    public void doSomething() {
        super.doSomething(); // вызов метода суперкласса
        // код
    }
}


  1. Для обращения к переменной суперкласса: Если у подкласса есть переменная с таким же именем, как и переменная суперкласса, вы можете использовать super для обращения к переменной суперкласса. Например:
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
public class SuperClass {
    protected int x = 10;
}

public class SubClass extends SuperClass {
    private int x = 20;
    
    public void display() {
        System.out.println(super.x); // доступ к переменной суперкласса
        System.out.println(this.x); // доступ к переменной подкласса
    }
}


Вышеперечисленные примеры демонстрируют основные сценарии использования super в Java. В общем, super позволяет подклассу работать с членами суперкласса и дает возможность контролировать, какие методы и переменные должны быть переопределены или скрыты в подклассе.

Пользователь

от magali , год назад

@eudora 

Ключевое слово super в Java используется для вызова метода или конструктора родительского класса. Оно позволяет обращаться к функциональности, унаследованной от родительского класса.


super может быть использовано в следующих случаях:

  1. В вызове конструктора родительского класса:
1
2
3
4
5
public class ChildClass extends ParentClass {
    public ChildClass() {
        super(); // вызов конструктора родительского класса
    }
}


  1. В вызове метода родительского класса:
1
2
3
4
5
public class ChildClass extends ParentClass {
    public void someMethod() {
        super.someMethod(); // вызов метода someMethod() из родительского класса
    }
}


  1. Для доступа к переменным родительского класса, скрытым переменными с тем же именем в дочернем классе:
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
public class ParentClass {
    private int num = 10;
}

public class ChildClass extends ParentClass {
    private int num = 20;

    public void printNum() {
        System.out.println(super.num); // доступ к переменной num родительского класса
    }
}


Обратите внимание, что super должен быть первым оператором в конструкторе или методе дочернего класса, иначе компилятор выдаст ошибку.