113.69K
Category: programmingprogramming

Программирование на языке 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);
И т.д

18.

Спасибо за внимание!
English     Русский Rules