Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Ключевое слово super. Дифференциация членов. Пример кода. Вызов конструктора суперкласса. Если класс перенимает свойства другого класса, и члены суперкласса имеют те же имена, что и в подклассе, для их разделения мы используем ключевое слово super, как по




Ключевое слово super

Ключевое слово super схоже с ключевым словом this. Ниже приведены случаи, где используется super в Java.

· Для дифференциации членов суперкласса от членов подкласса, если у них есть одинаковые имена.

· Для вызова конструктора суперкласса из подкласса.

Дифференциация членов

Если класс перенимает свойства другого класса, и члены суперкласса имеют те же имена, что и в подклассе, для их разделения мы используем ключевое слово super, как показано ниже.

super. variablesuper. method();

Пример кода

Этот раздел содержит программу, которая демонстрирует использование ключевого слова super в Java.

В предложенной программе у вас есть два класса с именами Sub_class и Super_class, оба имеющие метод display() с разными реализациями и переменную с именем num с разными значениями. Вы можете увидеть, что мы использовали ключевое слово super для дифференциации членов суперкласса из подкласса.

Скопируйте и вставьте эту программу в файле под именем Sub_class. java.

// Интерфейсclass Super_class { int num = 88; // Метод display() суперкласса public void display() { System. out. println(" Это метод display() суперкласса" ); }} public class Sub_class extends Super_class { int num = 77; // Метод display() субкласса public void display() {   System. out. println(" Это метод display() подкласса" ); } public void my_method() { // Инициализация подкласса Sub_class sub = new Sub_class(); // Вызываем метод display() подкласса sub. display(); // Вызываем метод display() суперкласса super. display(); // Выводим значение переменной num подкласса System. out. println(" Значение переменной num в подклассе: " + sub. num); // Выводим значение переменной num суперкласса System. out. println(" Значение переменной num в суперклассе: " + super. num); } public static void main(String args[]) { Sub_class obj = new Sub_class(); obj. my_method(); }}

Скомпилируйте и выполните вышеприведённый код, как показано ниже.

javac Sub_classjava Super

После запуска программы будет получен следующий результат:

Это метод display() подклассаЭто метод display() суперклассаЗначение переменной num в подклассе: 77Значение переменной num в суперклассе: 88

Вызов конструктора суперкласса

Если класс перенимает свойства другого класса, подкласс автоматически получается стандартный конструктор суперкласса. Но если Вы хотите вызвать параметризованный конструктор суперкласса, Вам нужно использовать ключевое слово super, как показано ниже.

super(values);

Пример кода

В предложенной программе демонстрируется использование в Java ключевого слова super для вызова параметризованного конструктора. В этой программе содержится суперкласс и подкласс, где суперкласс содержит параметризованный конструктор, который принимает строковое значение, а мы используем ключевое слово super для вызова параметризованного конструктора суперкласса.

Скопируйте и вставьте эту программу в файле под именем Subclass. java

class Superclass { int age; Superclass(int age) { this. age = age;             } public void getAge() { System. out. println(" Значение переменной age в суперклассе равно: " + age); }} public class Subclass extends Superclass { Subclass(int age) { super(age); } public static void main(String args[]) { Subclass s = new Subclass(24); s. getAge(); }}

Скомпилируйте и выполните вышеприведённый код, как показано ниже.

javac Subclassjava Subclass

После запуска программы будет выдан результат:

Значение переменной age в суперклассе равно: 24

Отношение IS-A

IS-A — это способ сказать «Этот объект является типом этого объекта». Давайте посмотрим, как ключевое слово extends используется для достижения наследования.

public class Animal {} public class Mammal extends Animal {} public class Reptile extends Animal {} public class Dog extends Mammal {}

Теперь, основываясь на примере выше, в объектно-ориентированных терминах, следующие утверждения верны

· Animal является суперклассом класса Mammal.

· Animal является суперклассом класса Reptile.

· Mammal и Reptile являются подклассами класса Animal.

· Dog одновременно является подклассом классов Mammal и Animal.

Теперь, используя отношение IS-A, мы можем сказать так:

· Mammal IS-A Animal.

· Reptile IS-A Animal.

· Dog IS-A Mammal.

Таким образом, Dog IS-A тоже Animal.

С использованием ключевого слова extend, подклассы могут наследовать все свойства суперкласса кроме его приватных свойств (private).

Мы можем убедиться, что Mammal на самом деле Animal с использованием оператора экземпляра.

class Animal {} class Mammal extends Animal {} class Reptile extends Animal {} public class Dog extends Mammal { public static void main(String args[]) { Animal a = new Animal(); Mammal m = new Mammal(); Dog d = new Dog(); System. out. println(m instanceof Animal); System. out. println(d instanceof Mammal); System. out. println(d instanceof Animal); }}

Мы получим следующий результат:

truetruetrue

Так как у нас есть хорошее понимание принципа работы ключевого слова extends, давайте рассмотрим, как используется ключевое слово implements для получения отношения IS-A.

В общем, ключевое слово implements в Java используется с классами для перенятия свойств интерфейса. Интерфейсы никогда не могут быть переняты классом с помощью extends.

Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...