Материал: 8 - Презентация

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

Центрдистанционногообучения

Пример

class Crossover {}

class Garage {

private Crossover parkedAuto;

public Garage(Crossover parkedAuto) { this.parkedAuto = parkedAuto;

}

public Crossover getParkedAuto(){ return parkedAuto;}

}

class Man {

public static void main(String[] args) {

Garage garage = new Garage (new Crossover());

}

}

21 online.mirea.ru

Центрдистанционногообучения

Проблемы

• Обычные классы и методы работаю с конкретными типами (примитивы или классы)

• Что делать, если нужно работать с разнообразными типами?

• Не писать же один и тот же код для каждого возможного типа…

22 online.mirea.ru

Центрдистанционногообучения

Пример иерархии типов

class Auto {}

 

А как же хэтчбэк?

class

Crossover extends Auto{}

class

Hatchback extends Auto{}

 

 

class Garage {

private Auto parkedAuto;

public Garage(Auto parkedAuto) { //конструктор this.parkedAuto = parkedAuto;

}

public Auto getParkedAuto(){ return parkedAuto;}

}

 

 

class Main {

 

 

public static void main(String[] args) {

 

 

Garage garage = new Garage (new Crossover());

 

 

Garage anotherGarage = new Garage (new Hatchback());

 

}

}

 

23

online.mirea.ru

 

 

Центрдистанционногообучения

Увеличение гибкости за счет наследования

•Код работает с объектами по ссылке на базовый тип.

•Этот код может быть использован для работы с производными типами.

•Достигаемая гибкость работает только в пределах одной иерархии (наследования)

24 online.mirea.ru

Центрдистанционногообучения

А как же прицеп?

interface Wheeled{} //общийинтерфейс class Crossover implements Wheeled{}

class

Hatchback

implements

Wheeled{}

class

Trailer

implements

Wheeled{}

class Garage {

private Wheeled parkedThing;

public Garage(Wheeled parkedThing){this.parkedThing = parkedThing;} public Wheeled getParkedThing(){ return parkedThing;}

}

class Main {

public static void main(String[] args) {

Garage garage = new Garage (new Crossover()); Garage anotherGarage = new Garage (new Trailer());

}

}

25 online.mirea.ru

Источник: https://studfile.net/preview/16403817/