У меня возникла проблема с этим кодом, который содержит класс Counter, класс MyCounter1 и класс MyCounter2 в Java;
Мне интересно, почему два результата в основном методе в
output 1:
cnt1: 2 cnt2: 2
cnt1: 5 cnt2: 0
output 2:
cnt1: 3 cnt2: 3
cat1: 5 cnt2: 0
Насколько я понял, когда я вызываю конструктор mycounter1 в первой строке кода (Counter m = new myCounter 1();) в основном методе, я вызываю конструктор сначала базовый класс Counter, который вызывает метод inc().
поскольку метод inc() перезаписан в классе myCounter1, мне придется добавить 2 к cnt1 и cnt2.
поскольку мой cnt1 равен 5, почему результат для cnt1 по-прежнему равен 2, а не 5+2=7?
и откуда берется второй результат с cnt=5 и cnt=0 ?class Counter {
int cnt1 = 5;
int cnt2;
void inc() {
cnt1 = cnt1 + 1;
cnt2 = cnt2 + 1;
}
public Counter() {
inc();
cnt1 = cnt2 = 0;
}
}
class MyCounter1 extends Counter {
int cnt1 = 5;
void inc() {
cnt1 = cnt1 + 2;
cnt2 = cnt2 + 2;
System.out.println("cnt1: " + cnt1 + " cnt2: " + cnt2);
}
public MyCounter1() {
System.out.println("cnt1: " + cnt1 + " cnt2: " + cnt2);
}
}
class MyCounter2 extends MyCounter1 {
int cnt1;
void inc() {
cnt1 = cnt1 + 3;
cnt2 = cnt2 + 3;
System.out.println("cnt1: " + cnt1 + " cnt2: " + cnt2);
}
}
public static void main(String[] b) {
Counter m = new MyCounter1(); ``
m = new MyCounter2();
}
Подробнее здесь: https://stackoverflow.com/questions/792 ... ng-in-java
Проблема с кодированием с наследованием и затенением переменных в Java ⇐ JAVA
Программисты JAVA общаются здесь
1734512822
Anonymous
У меня возникла проблема с этим кодом, который содержит класс Counter, класс MyCounter1 и класс MyCounter2 в Java;
Мне интересно, почему два результата в основном методе в
output 1:
cnt1: 2 cnt2: 2
cnt1: 5 cnt2: 0
output 2:
cnt1: 3 cnt2: 3
cat1: 5 cnt2: 0
Насколько я понял, когда я вызываю конструктор mycounter1 в первой строке кода (Counter m = new myCounter 1();) в основном методе, я вызываю конструктор сначала базовый класс Counter, который вызывает метод inc().
поскольку метод inc() перезаписан в классе myCounter1, мне придется добавить 2 к cnt1 и cnt2.
поскольку мой cnt1 равен 5, почему результат для cnt1 по-прежнему равен 2, а не 5+2=7?
и откуда берется второй результат с cnt=5 и cnt=0 ?class Counter {
int cnt1 = 5;
int cnt2;
void inc() {
cnt1 = cnt1 + 1;
cnt2 = cnt2 + 1;
}
public Counter() {
inc();
cnt1 = cnt2 = 0;
}
}
class MyCounter1 extends Counter {
int cnt1 = 5;
void inc() {
cnt1 = cnt1 + 2;
cnt2 = cnt2 + 2;
System.out.println("cnt1: " + cnt1 + " cnt2: " + cnt2);
}
public MyCounter1() {
System.out.println("cnt1: " + cnt1 + " cnt2: " + cnt2);
}
}
class MyCounter2 extends MyCounter1 {
int cnt1;
void inc() {
cnt1 = cnt1 + 3;
cnt2 = cnt2 + 3;
System.out.println("cnt1: " + cnt1 + " cnt2: " + cnt2);
}
}
public static void main(String[] b) {
Counter m = new MyCounter1(); ``
m = new MyCounter2();
}
Подробнее здесь: [url]https://stackoverflow.com/questions/79290501/coding-problem-with-inheritance-and-variable-shadowing-in-java[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия