Similar presentations:
Программирование на языке Java (toString и введение в Наследование)
1.
Программированиена языке Java
toString и введение в Наследование
2.
Объекты в JavaЧто такое объект?
Как отличить один объект от другого?
Объекты должны иметь какие-то общие характеристики
Например наименование и идентификатор, чтобы можно было
их различать
3.
Как вывести информацию об объекте?static void printNotebook(Notebook notebook) {
// Скажи свой бренд
System.out.println(notebook.getBrand());
// Скажи свое название
System.out.println(notebook.getName());
}
Мы обращаемся к объекту notebook
Просим его сказать нам значение какого либо свойства
А если свойств много (10+)
Придется всегда так делать?
А что если попробовать иначе?
System.out.println(notebook);
4.
Вывод информации об объектеcom.company.Notebook@154617c
Что это?
На самом деле это название пакета, название класса, и хэш
код объекта
Почему выводится именно это?
System.out.println(notebook);
Равнозначно
System.out.println(notebook.toString());
Заметьте, что вывод в консоль вызывается на объект
notebook, а не его свойства!
5.
toStringЭто функция присутствующая в каждом объекте по
умолчанию
int[] array = new int[5];
System.out.println(array); //array.toString()
Random rnd = new Random();
System.out.println(rnd); // rnd.toString()
Scanner sc = new Scanner(System.in);
System.out.println(sc); // sc.toString()
6.
Для чего нам это нужно?На самом деле мы можем изменить имплементацию этого
метода по своему усмотрению для наших с Вами объектов
Действие изменение имплементации существующего
метода называется «Переопределение» (Method Overriding)
В Java, чтобы переопределить метод, используется
ключевое слово в аннотации метода @Override
public String toString() – спецификация метода, не должна
отличаться от родителя.
7.
Пример @Override:class Person {
String name;
int age;
String countryFrom;
// Constructors, Getters and Setters
@Override
public String toString() {
String message = "My name is " + this.name +
". I'm " + this.age +
" years old. I am from " + this.countryFrom;
return message;
}
}
8.
Пример @Override, продолжение:public static void main(String[] args) {
Person p = new Person("Mary", 23, "USA");
System.out.println(p); // p.toString()
}
В консоли получим:
My name is Mary. I'm 23 years old. I am from USA
9.
ВопросыОткуда вообще взялся toString()?
Что такое перегрузка метода?
Аннотации?
Спецификация метода?
10.
Собеседование-
Итак, первый технический вопрос, а как называется
базовый класс в Java?
-
Ммм, это, того, много их… Наверное.
-
Что ж, спасибо! Мы вам перезвоним… Наверное.
Занавес.
11.
Вначале был свет ObjectПрародителем (Адамом и Евой) всех классов в Java
является класс Object.
Каждый класс, таким образом, – наследник класса
Object.
Т.е. каждый класс имеет те же свойства что и Object.
Каждый класс умеет делать то, что умеет Object
Object – базовый класс в Java
12.
Ключевое слово extendsКлючевое слово extends обозначает родителя для
данного класса. Другими словами чьим наследником
является класс.
Все классы в Java так или иначе являются
наследниками класса Object
class Person extends Object { ... }
13.
Почему не использовали ранее?class Ball { // где extends???
int radius;
String color;
boolean isTransparent;
}
Равнозначно
// Object наследуются по умолчанию
// даже если не указывать
class Ball extends Object{
int radius;
String color;
boolean isTransparent;
}
14.
ВопросыПочему бы просто не написать метод public
String
toString()?
Зачем нам @Override?
Можно ли обойтись без @Override?
На самом деле, дефолтный toString()
присутствует
у класса Object и так как все объекты наследуются от
класса Object, то все объекты также наследуют
toString() как и другие методы класса Object
15.
Что значит «наследует»?Это действие одного из китов ООП – Наследования.
Если что то (метод, свойство и др.) присутствует в одном
классе А, а класс Б наследует(extends) класс А, то класс Б
будет иметь те же методы и свойства (но не только их),
что и класс А
В предыдущем примере:
Класс Person наследуется от базового класса Object.
Класс Object имеет метод toString()
Значит класс Person тоже имеет этот метод.
16.
Класс ObjectЕсть и другие методы которыми владеет класс Object:
equals()
hasCode()
clone()
getClass()
…
17.
Классная работаВозвращаясь к нашим ноутбукам,
жестким дискам и т.д. Сделать так, чтобы
мы могли получить всю информацию
написав:
System.out.println(processor);
System.out.println(notebook);
И т.д