Всем привет!
Сделал задачу, по этому не могу ее прикрепить, но это Бонусное задание | 12 лекция | 5 уровень || ООП.Перегрузка, можно ее найти по данным реквизитам.
Первый файл
public class Solution {
public static void main(String[] args) {
//Блок 2.
//Вызов для Object
new Tree().info((Object)new Integer("4"));
new Tree().info((Object)new Short("4"));
new Tree().info((Object)new BigDecimal("4"));
//Блок 3.
//Вызов для Number
new Tree().info(new Integer("4"));
new Tree().info(new Short("4"));
new Tree().info(new BigDecimal("4"));
//Блок 4.
//Вызов для String
new Tree().info(new String("4"));
new Tree().info(new Integer("4").toString());
new Tree().info(new Short("4").toString());
new Tree().info(new BigDecimal("4").toString());
}
}
Второй файл
public class Tree {
public static int globalNumber;
public int number;
public Tree() {
this.number = ++globalNumber;
}
public void info(Object s) {
System.out.println(String.format("Дерево № %d , метод Object, параметр %s", number, s.getClass().getSimpleName()));
}
public void info(String s) {
System.out.println(String.format("Дерево № %d , метод String, параметр %s", number, s.getClass().getSimpleName()));
}
public void info(Number s) {
System.out.println(String.format("Дерево № %d , метод Number, параметр %s", number, s.getClass().getSimpleName()));
}
}
После успешного прохождения кода решил разобраться в нем детальнее и возник вопрос. Почему в main мы указываем в объявлении параметров метода "4"?? , конструктор у нас не зависит от этого параметра, как и поле number, получается, данное число мы ставим просто так, чтобы можно было привести тип данных для каждого из методов?
HellScream
20 уровень
Не ясно до конца...
Решен
Комментарии (3)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
JustinianJudge в Mega City OneMaster
10 января 2020, 05:22
https://docs.oracle.com/javase/specs/jls/se8/html/jls-15.html#jls-15.12.2
Ccылка на спецификацию по правилам разрешения перегрузки методов, начинается все с наиболее подходящего конкретного типа, без использования приведений и боксинга/анбкосинга, а потом уже идет по цепочке правил.
0
JustinianJudge в Mega City OneMaster
10 января 2020, 05:07решение
Вместо 4, могло быть 5 или 10.
Конструктор и поле number делает свою работу.
А 4 делает свою.
Есть три перегруженных метода:
И мы туда посылаем 4 в качестве аргумента в различных вариациях и типах.
Методу с одним и тем же названием.
Суть задачи увидеть что в одних случаях будет отработан один метод, в других другой, в третьих третий, в зависимости от типа аргумента, джава будет искать сначала имя метода, а потом выбирать метод с наиболее подходящим набором параметром.
4 и число в целом выбрано для наглядности.
Герасим это персонаж. Это имя, это человек и тд.
4 это может быть и Integer, это является Number, это является Object.
То есть один объект имеет характеристики и относится к типам, которые являются его родителями. Наследование типов.
так же как и "4" это String и Object.
+4
HellScream
10 января 2020, 10:48
Спасибо! Теперь разобрался)
0