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

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

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

Переопределение методов

 

public class Shape {

 

 

 

public double getArea() {

 

Класс-предок

 

return 0;

 

 

 

}

 

 

 

 

}

 

 

 

 

 

 

 

 

 

 

 

 

public class Circle extends Shape {

 

public class Rectangle extends Shape {

 

 

 

private double radius;

 

private double width;

 

private double height;

 

 

 

public double getArea() {

 

public double getArea() {

return Math.PI * radius * radius;

 

 

return width * height;

}

 

 

 

 

}

 

}

 

 

 

 

 

}

 

 

 

 

 

 

 

 

 

 

Классы-потомки

online.mirea.ru

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

Переопределение методов

Circle c1 = new Circle(0, 0, 2); Shape s1 = c1; System.out.println(s1.getArea());

// печатает 12.566370614359172

Метод getArea() в классе Circle

переопределяет (overrides) этот метод в классе Shape. В Java методы всегда виртуальные.

online.mirea.ru

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

Переопределение методов

Если класс-потомок определяет метод с той же сигнатурой (именем и типами параметров), что и класс-предок, то этот метод переопределяется.

online.mirea.ru

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

Переопределение методов

 

 

 

 

 

 

 

 

 

 

 

class Shape

 

 

 

public double getArea() {

 

 

 

 

 

 

 

 

 

 

 

 

 

 

return 0;

 

 

 

 

 

getArea()

 

 

}

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

public double getArea() {

 

 

 

 

 

 

return Math.PI * radius * radius;

 

 

class Circle

 

 

}

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

getArea()

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

x: 0

 

 

 

 

 

 

 

 

 

 

 

 

c1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

y: 0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

radius: 2

s1

Методы getArea() в классах Shape и Circle ссылаются на разный код

online.mirea.ru

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

Переопределение методов

Аннотация @Override:

public class Circle extends Shape {

private double radius;

@Override

public double getArea() {

return Math.PI * radius * radius;

}

}

Если класс-предок не определяет метод getArea(), то это ошибка компиляции

online.mirea.ru

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