Мне нужен пример для реализации универсального полиморфизма (особенно Включение) - PullRequest
0 голосов
/ 23 мая 2018

В вопросе я узнал, что полиморфизм имеет 4 типа:

  1. Принуждение,
  2. Перегрузка
  3. Параметрический полиморфизм
  4. Включение

    Поэтому я не совсем понял, что означает Включение , мне нужен тот же пример для реализации этого понятия.

Ответы [ 2 ]

0 голосов
/ 23 мая 2018

Полиморфизм включения означает, что вы можете создать экземпляр объекта из его суперкласса.Например, у вас есть

public class Person {
.
.
}

public class Employee extends Person{
.
.
}

Таким образом, вы можете создать объект

Person x = new Employee();

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

Например, у вас есть SuperTyper geometry_figure и фигура SubTyper (круг, квадрат, треугольник, ..).Geometric_figure может иметь два атрибута x, y для местоположения на экране и абстрактный метод «рисовать», чтобы рисовать на экране, что каждая фигура, расширяющая его, должна реализовывать

Благодаря dynamic link Javaкогда вы вызываете ometricFigure.draw () , он автоматически узнает, какой тип геометрической_фигуры вы вызываете (круг, квадрат, треугольник, ..), и вызовите этот метод рисования

, чтобы вручнуюпроверьте, какой у него класс, который вы можете сделать:

Geometric Figure x = new Square();
if(x instance of Square){...}

Популярным случаем является случай, когда вы хотите сослаться на общий объект, подобный этому

Object x = new AnyClass();

, потому что объект является универсальным суперкласс, который есть у каждого класса.(Если вы ничего не расширяете, по умолчанию он расширяет объект)

0 голосов
/ 23 мая 2018

Как уже предлагалось, поищите себя немного, чтобы глубже понять эту тему ... Вот одно из возможных объяснений:

[...] Подтип позволяет написать функцию.взять объект определенного типа T, но также работать правильно, если передан объект, который принадлежит типу S, который является подтипом T (согласно принципу подстановки Лискова) Википедия - Полиморфизм

abstract class Vehicle
{
    abstract void move();
}

class Car extends Vehicle
{
    public void move() { ... }
}

class Ship extends Vehicle
{
    public void move() { ... }
}

public void moveVehicle(Vehicle v)
{
    v.move();
}

Вот пример для включения полиморфизма:

Vehicle [] vs = new Vehicle [2];

vs[0] = new Car();
vs[1] = new Ship();

for(Vehicle v : vs)
{
    moveVehicle(v);
}

Или другой пример:

Car c = new Car();
Ship s = new Ship();

moveVehicle(c);
moveVehicle(s);

Для получения дополнительной информации см. Википедия -Полиморфизм страница ... Но все же ищите себя в этой теме, чтобы получить более глубокое представление о ней!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...