Абстрактные классы и интерфейсы. (Занятие 4)

Слайд 2

Абстрактные классы Класс, содержащий абстрактные методы, называется абстрактным классом. Такие классы

Абстрактные классы

Класс, содержащий абстрактные методы, называется абстрактным классом. Такие классы помечаются

ключевым словом abstract.
Абстрактный метод не завершён. Он состоит только из объявления и не имеет тела.
Нельзя создать экземпляр абстрактного класса.
abstract class Figure {
private String name;
public Figure(final String name) {
this.name = name;
}
abstract double area();
}
Слайд 3

Абстрактные классы class Circle extends Figure { private double radius; public

Абстрактные классы

class Circle extends Figure {
private double radius;
public Circle(final String name,

final double radius) {
super(name);
this.radius = radius;
}
@Override
double area() {
return Math.PI * Math.pow(radius, 2);
}
}
Слайд 4

Интерфейсы Интерфейс содержит в себе только сигнатуры методов и статические поля.

Интерфейсы

Интерфейс содержит в себе только сигнатуры методов и статические поля. Помечается

ключевым словом interface.
Для использования интерфейса нужно написать его реализацию – класс, в котором будут описаны тела методов интерфейса.
Для реализации интерфейса классом используется ключевое слово implements.
interface Instrument {
int VALUE = 5; // static & final
void play(Note n); // Automatically public
void adjust();
}
Слайд 5

Интерфейсы class Wind implements Instrument { public void play(Note n) {

Интерфейсы

class Wind implements Instrument {
public void play(Note n) {
print(this

+ ".play() " + n);
}
public String toString() { return "Wind"; }
public void adjust() { print(this + ".adjust()"); }
}
Слайд 6

Интерфейсы

Интерфейсы

Слайд 7

Интерфейсы. Отделение от реализации public interface Processor { Object process(Object input);

Интерфейсы. Отделение от реализации

public interface Processor {
Object process(Object input);
}
class Upcase

implements Processor {
@Override
public String process(Object input) { // Covariant return
return ((String) input).toUpperCase();
}
}
class Downcase implements Processor {
public String process(Object input) {
return ((String) input).toLowerCase();
}
}
class Splitter implements Processor {
public String process(Object input) {
// The split() argument divides a String into pieces:
return Arrays.toString(((String) input).split(" "));
}
}
Слайд 8

Интерфейсы. Отделение от реализации public class Apply { // Не важно,

Интерфейсы. Отделение от реализации

public class Apply {
// Не важно, объект какого

класса передаётся.
// Главное - он должен реализовывать интерфейс с методом process()
public static void process(Processor p, Object s) {
System.out.println("Using Processor " + p.getClass().getSimpleName());
System.out.println(p.process(s));
}
public static String s = "Disagreement with beliefs is by definition incorrect";
public static void main(String[] args) {
process(new Upcase(), s);
process(new Downcase(), s);
process(new Splitter(), s);
}
}