Форум программистов, компьютерный форум, киберфорум
Наши страницы
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/4: Рейтинг темы: голосов - 4, средняя оценка - 5.00
wondermilk
4 / 4 / 7
Регистрация: 12.12.2014
Сообщений: 123
1

Восх. преобразование(не пойму, почему так)

23.07.2016, 08:41. Просмотров 736. Ответов 4
Метки нет (Все метки)

Вот, допустим такой код:
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
class Super {
    int number = 0;
 
    int get() {
        return number;
    }
}
 
class Sub extends Super {
    int number = 1;
 
    int get() {
        return number;
    }
 
    int superGet() {
        return super.number;
    }
}
 
public class KLAS {
    public static void main(String[] args) {
        Super first = new Sub();
        Sub second = new Sub();
 
        System.out.print("first.number = " + first.number + "\nfirst.get() = " + first.get());
        System.out.print("\nsecond.number = " + second.number + "\nsecond.get() = " + second.get()
         + "\nsecond.superGet()" + second.superGet());
    }
}
На выходе получим:

first.number = 0
first.get() = 1
second.number = 1
second.get() = 1
second.superGet()0

Но если у нас first.number = 0, то и first.get() должен возвращать 0
Немного не врубаюсь
Спасибо!
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.07.2016, 08:41
Ответы с готовыми решениями:

Не пойму почему ошибка
Всем доброго времени суток. Друзья /* * To change this template, choose...

Преобразование первой половины строки. Что я делаю не так?
И тут я либо туплю либо просто не могу найти нужную мне функцию 40 41 строчка ...

В ступоре. Почему так?
Есть в классе метод, который выводит индекс элемента в строке. Элемент должен...

Почему так получилось?
Объясните пожалуйста, почему так получается? double d = 1000000e100; int...

Почему ejbSelect так долго работает?!?
Подскажите пожалуйста, почему у меня некоторые ejbSelect так долго выполняются...

4
Tuma
60 / 41 / 20
Регистрация: 28.09.2013
Сообщений: 193
23.07.2016, 09:58 2
wondermilk, в первом случае вы создаете объект типа Super ( не важна что вы туда положили наследник Sub) компилятор видит его как Super, поэтому и обращается к полю класса Super. И поля надо делать приватные.
0
wondermilk
4 / 4 / 7
Регистрация: 12.12.2014
Сообщений: 123
23.07.2016, 10:24  [ТС] 3
Да, понятно, что приватные, просто в книге такой пример был
Но если обращается к полю Super, то почему он не обращается к функции Super?
0
Tuma
60 / 41 / 20
Регистрация: 28.09.2013
Сообщений: 193
23.07.2016, 10:36 4
Лучший ответ Сообщение было отмечено wondermilk как решение

Решение

wondermilk, ну так это и есть суть полиморфизма, создавая объект типа Super
Java
1
Super first = new Sub();
через first вы сможете получить доступ только к членам класса Super, но при этом если вызывается метод, который переопределен в дочернем, то вызывается из дочернего. Например, если бы в классе Sub не было метода get(), то тогда вызвался бы метод из Super/
0
wondermilk
4 / 4 / 7
Регистрация: 12.12.2014
Сообщений: 123
23.07.2016, 10:37  [ТС] 5
А, сппасибо
0
23.07.2016, 10:37
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.07.2016, 10:37

java.lang.NullPointerException почему так?
вот код: private String stat; private int istat; ... ......

Объясните почему работает именно так?
Добрый день. Пишу приложение и пытаюсь в меню добавить обработку метода ...

Магия Java или объясните, почему так
Здравствуйте, в процессе разработки, подбирая различный способы обработки...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru