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

Пример. Ключевое Слово instanceof. Пример public interface Animal {} public class Mammal implements Animal {} public class Dog extends Mammal {}




Пример

public interface Animal {} public class Mammal implements Animal {} public class Dog extends Mammal {}

Ключевое Слово instanceof

Давайте использует оператор instanceof в Java с целью проверки, являются ли Mammal и Dog на самом деле Animal.

Пример

interface Animal{}class Mammal implements Animal{} public class Dog extends Mammal { public static void main(String args[]) { 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

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

Эти отношения в основном основаны на обращении. Они определяют, является ли определенный класс HAS-A определенным случаем. Эта взаимосвязь помогает уменьшить дублирование кода, а также баги. Взглянем на пример.

public class Vehicle{}public class Speed{} public class Van extends Vehicle { private Speed sp; }

Мы видим, что у класса Van HAS-A (есть) Speed. Имея отдельный класс Speed, нам не нужно вставлять код, принадлежащий Speed в класс Van, что позволяет нам использовать класс Speed в нескольких приложениях.

В особенности объектно-ориентированного программирования, пользователям не нужно волноваться о том, какой объект выполняет текущую работу. Для достижения этого, класс Van скрывает детали реализации от пользователей класса Van. Таким образом, пользователи, должны попросить класс Van выполнить определенное действие, и класс Van либо выполнит работу сам по себе, либо попросит другой класс выполнить действие.

Виды наследования

Есть различные способы наследования, как показано ниже.

Вид Схема Пример
Одиночное наследование public class A {... }public class B extends A {... }
Многоуровневое наследование public class A {... }public class B extends A {... }public class C extends B {... }
Иерархическое наследование public class A {... }public class B extends A {... }public class C extends A {... }
Множественное наследование public class A {... }public class B {... }public class C extends A, B {... }// Java не поддерживает множественное наследование

Очень важно запомнить, что Java не поддерживает множественное наследование. Это значит, что класс не может продлить более одного класса. Значит, следующее утверждение НЕВЕРНО:

public class extends Animal, Mammal{}

Тем не менее, класс может реализовать один или несколько интерфейсов, что и помогло Java избавиться от невозможности множественного наследования.

 

23. Java – Переопределение (overriding)

В предыдущей главе мы рассказали про суперклассы и подклассы. Если класс наследует метод из своего суперкласса, тогда есть шанс переопределить взятый метод, если он не помечен final.

Так что такое в Java overriding или override – это переопределение.

Преимущество в Java переопределения заключается в том, что оно позволяет определять (описывать) поведение, характерное для типа подкласса, значит подкласс может реализовать метод родительского класса на основе его требования.

В объектно-ориентированных терминах, переопределение значит перезапись функционала существующего метода.

Пример 1

Рассмотрим пример.

class Animal { public void move() { System. out. println(" Животные могут двигаться" ); }} class Dog extends Animal { public void move() { System. out. println(" Собаки могут ходить и бегать" ); }} public class TestDog { public static void main(String args[]) { Animal a = new Animal(); // Animal - ссылка и объект Animal b = new Dog(); // Animal - ссылка, но Dog - объект a. move(); // Запускает метод в классе Animal b. move(); // Запускает метод в классе Dog  }}

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

Животные могут двигатьсяСобаки могут ходить и бегать

В вышеприведённом примере вы можете заметить, что b хоть и является типом Animal, оно запускает метод move в классе Dog. Причина тому: во время компиляции проходит проверка ссылочного типа. Однако, во время выполнения, JVM определяет тип объекта и запускает метод, который принадлежит этому конкретному объекту.

Следовательно, по примеру выше, программа запустится правильно, так как класс Animal имеет метод move. Затем, во время выполнения, он запускает метод, принадлежащий этому объекту.

Рассмотрите следующий пример:

Поделиться:





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



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