Материал: 3

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

}

public void setName(String name) { this.name = name; } public String getName() { return name; }

public String getType() { return "Домашнее животное"; }

}

public class Cat extends Pet { private Date lastMeowDate; public Cat() { this("Unnamed"); }

public Cat(String name) { super(name); }

public Cat(String name, int age) { super(name, age); } @Override

public String getType() { return "Кот"; } public void meow() {

System.out.println("Meow!"); lastMeowDate = new Date();

}

}

Наследование

super() означает Ссылка на базовый класс, которую можно использовать в дочерних классах.

Переопределение (Overriding)

Означает переписывание (переделывание, переопределение) в классепотомке УЖЕ существующего метода класса-родителя.

Аннотирование в Java

Специальная форма синтаксических метаданных, которая может быть добавлена в исходный код. Аннотации используются для анализа кода, компиляции или выполнения. Аннотируемы пакеты, классы, методы, переменные и параметры. Например: @Override - проверяет, переопределён ли метод. Вызывает ошибку компиляции, если метод не найден в родительском классе;

UML диаграмма отношения классов - наследование

Полиморфизм в Java

Определение полиморфизма.

Свойство системы, позволяющее использовать объекты с одинаковым интерфейсом без информации о типе и внутренней структуре объекта.

Пример:

Pet pet1 = new Pet(); Pet pet2 = new Cat(); Pet pet3 = new Dog(); pet1.getType(); pet2.getType(); pet3.getType();

Тип ссылка или Тип объект

Pet pet1 = new Pet(); Pet pet2 = new Cat(); Pet pet3 = new Dog(); pet1.getType(); pet2.getType(); pet2.meow(); pet3.getType(); pet3.woof();

Проверьте, есть ли ошибки?

Ошибки

Типы ошибок в Java

Домашнее задание

Необходимо модифицировать программу с домашними животными, таким образом, чтобы можно было делать выборку кошек по возрасту, также добавив начальный список животных собак. К выводу клички добавить тип животного («кот Барсик», «собака Улыбака»).

Класс Object

Методы Object

•boolean equals(Object obj);

•String toString(); // необходимо переопределять

•int hashCode();

•Object clone();

Домашнее задание

Создкласскомплексноетьчисло

public class Complex { private int re; private int im;

Complex(int re, int im) { … } @Override

public boolean equals(Object obj) { … } @Override

public String toString() { … } //Метод,реализующоперацсложенияюй

public Complex plus(Complex z) { … }

// Метод, реализующий операцию вычитания public Complex minus(Complex z) { … }

}

Создать класс для демонстрации работы класса комплексных чисел:

public class ComplexTest {

public static void main(String[] args) { Complex z1 = new Complex(1, 0); Complex z2 = new Complex(2, 3); Complex z3 = new Complex(5, 10); System.out.println("z1 = " + z1); System.out.println("z2 = " + z2); System.out.println("z3 = " + z3);

System.out.println("z1 + z2 = " + z1.plus(z2)); System.out.println("z1 - z3 = " + z1.minus(z3)); System.out.println(z1.equals(z3) ? “z1 == z3” : “z1 !=

z3”);

}

}

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

Когда мы создаем абстрактный класс, то предполагаем наследоваться от него. Так-как абстрактный класс не предполагает создания экземпляров.

В абстрактном классе мы будем определять абстрактные методы, реализовывать которые будем в классах наследниках

public abstract class Pet {

private String name; private int age;

public Pet() { this("Unnamed");}

public Pet(String name) {name = "Unnamed";} public Pet(String name, int age) {

this.name = name; this.age = age;

}

public void setName(String name) { this.name = name; } public String getName() { return name; }

public String getType() { return "Домашнее животное"; } public abstract void say(); // абстрактный метод

}

Класс Cat расширяет Pet

public class Cat extends Pet { private Date lastMeowDate; public Cat() { this("Unnamed"); }

public Cat(String name) { super(name); }

public Cat(String name, int age) { super(name, age); }

@Override

public String getType() { return "Кот"; }

@Override

public void say() { System.out.println("Meow!"); lastMeowDate = new Date();

}

}

Правило наследования Java

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

Правило: Класс-наследник может наследовать только один базовый класс, но множество интерфейсов.

В Java множественное наследование реализовано через механизм интерфейсов.

Интерфейсы в Java

Интерфейс Java представляет собой набор абстрактных методов и констант (необязательно). Абстрактный метод представляет собой заголовок метода без тела. Абстрактный метод объявляется с помощью модификатора abstract, потому, что все методы в интерфейсе являются как правило, абстрактными, то у них нет реализации.

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