Форум программистов, компьютерный форум, киберфорум
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
88 / 86 / 55
Регистрация: 14.11.2015
Сообщений: 1,099
1

Object object = new B()

17.03.2017, 19:24. Показов 1264. Ответов 10
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Объясните кто-нибудь, почему в этом коде компилятор не находит метод m2 в классе B. Что я неправильно понимаю?
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
public class A {
    public static void main(String[] args) {
        Object a = new B();
        a.m2(); //can't resolve method m2()
    }
 
 
    public void m1() {
        System.out.println("A: m1");
    }
 
    public void m2() {
        System.out.println("A: m2");
    }
 
    public void m3() {
        System.out.println("A: m3");
    }
 
}
 
class B extends A {
    @Override
    public void m2() {
        System.out.println("B: m2");
    }
 
    @Override
    public void m3() {
        System.out.println("B: m3");
    }
}
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
17.03.2017, 19:24
Ответы с готовыми решениями:

Какая разница между Object a; и Object a=null;
Какая разница между Object a; и Object a=null;

Object
private Class имя = Object.class; обьясните мне пожалуйста суть вот этой строки - Object.class...

Связь с Object
Объясните что такое фактический класс. Что значит "Любой объект представляет собой экземпляр класса...

Object и массивы.
Подскажите как работать с массивом, когда передаем его как Object. Для наглядности поясню. В Java...

10
64 / 64 / 26
Регистрация: 07.01.2016
Сообщений: 374
17.03.2017, 19:32 2
Java
1
Object a = new B();
может
Java
1
A a = new B();
0
88 / 86 / 55
Регистрация: 14.11.2015
Сообщений: 1,099
17.03.2017, 19:35  [ТС] 3
Я понимаю, что так будет работать. Мне непонятно, почему не работает в моем случае.
0
Эксперт Java
2398 / 2223 / 565
Регистрация: 28.12.2010
Сообщений: 8,672
17.03.2017, 19:38 4
Artmal, потому что у класса Object нет метода m2
1
88 / 86 / 55
Регистрация: 14.11.2015
Сообщений: 1,099
17.03.2017, 21:08  [ТС] 5
KEKCoGEN, объясните, пожалуйста, логику такой конструкции, потому что я чего-то не понимаю. Почему компилятору сразу не ставить ошибку компиляции, например несоотвеотствующие типы Object и B. Какой толк от
Java
1
Object a = new B();
если по итогу я ничего из класса B не могу использовать.
0
Автоматизируй это!
Эксперт Python
7107 / 4610 / 1215
Регистрация: 30.03.2015
Сообщений: 13,236
Записей в блоге: 29
17.03.2017, 21:10 6
ты можешь из него использовать все то, что есть и в классе обджект
полиморфизм, слышал?
0
88 / 86 / 55
Регистрация: 14.11.2015
Сообщений: 1,099
17.03.2017, 21:15  [ТС] 7
Welemir1, так а толк от инициализации переменной типа Object каким-то другим типом какой? Если мне ничего недоступно с класса B, я могу писать просто
Java
1
Object a = new Object();
0
Эксперт Java
2398 / 2223 / 565
Регистрация: 28.12.2010
Сообщений: 8,672
17.03.2017, 21:24 8
Цитата Сообщение от Artmal Посмотреть сообщение
так а толк от инициализации переменной типа Object
нет никакого толка. Читайте про полиморфизм.

Цитата Сообщение от Artmal Посмотреть сообщение
Почему компилятору сразу не ставить ошибку компиляции
Потому что тут нет никакой ошибки. С чего компилятору говорить что она есть

Непонятно каким образом вы дошли до изучения спринга если незнаете элементарных вещей.
0
64 / 64 / 26
Регистрация: 07.01.2016
Сообщений: 374
17.03.2017, 21:54 9
Artmal, а зачем вам переменная типа Object?
0
88 / 86 / 55
Регистрация: 14.11.2015
Сообщений: 1,099
17.03.2017, 22:29  [ТС] 10
DavidKarchikyan, на собеседование вопрос был, вызовется ли нормально метод из B.
0
64 / 64 / 26
Регистрация: 07.01.2016
Сообщений: 374
17.03.2017, 22:39 11
Лучший ответ Сообщение было отмечено Artmal как решение

Решение

Artmal,
Цитата Сообщение от KEKCoGEN Посмотреть сообщение
Непонятно каким образом вы дошли до изучения спринга если не знаете элементарных вещей.
мне тоже интересно, а как?

Добавлено через 6 минут
Но попробую объяснить Есть три класса.
1. Существо (Object) (которое умеет только дышать)
2. Животное (A) (которое умеет только ходить) + наследуется от Существа, значит умеет и дышать.
3. Кошка (B) (которая умеет только мяукать) + наследуется от Животного, значит умеет и ходить + наследуется от Существа, значит умеет и дышать.

Теперь если ты создашь объект Существо (Object) Object a = new Object(), то оно может только дышать, и разницы нет ты создал существо от Животного Object a = new А() или от Кошки Object a = new В()
1
17.03.2017, 22:39
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
17.03.2017, 22:39
Помогаю со студенческими работами здесь

Class и Object
Я не понимаю смысла ключевого слова Class. Если Object - это суперкласс, от которого наследуются...

Устройство Object.clone()
Как функционирует данный метод? А точнее: как метод суперкласса Object может знать о полях в...

applet and tag object
Доброй ночи! Не могу написать простейший хэлоуворд с помощью аплета. C HTML tag'ом object...

Коллекция HashMap из Object
Есть коллекция HashMap<String, Object>, туда занесли 10 различных пар объектов. Вывести содержимое...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru