Member 13203712 Ответов: 2

В чем проблема в этом коде? Поэтому значения I и J не доступны для способ showsub?


class A
{
  int i;
  int j;
  void show(int i,int j)
  {
    System.out.println("i="+i+" "+"j="+j);
  }
}

class B extends A
{
  int k;
  void showsub(int k)
  {
    System.out.println("i="+i+" "+"j="+j+" "+"k="+k);
  }
}

class inherit
{
  public static void main(String args[])
  {
    A obj1=new A();
    B obj2=new B();
    obj1.show(3,5);
    obj2.show(4,6);
    obj2.showsub(7);
  }
}


Что я уже пробовал:

Я пробовал этот код, но не мог понять, почему значения i, j недоступны методу showsub?

2 Ответов

Рейтинг:
1

CPallini

Они действительно доступны. Однако они инициализированы нулем. ваша программа правильно выводит:

i=3 j=5
i=4 j=6
i=0 j=0 k=7


Member 13203712

Почему они инициализированы нулем? Почему не с их фактическими значениями?

Рейтинг:
0

Richard MacCutchan

Поскольку эти переменные являются частными для класса А и, следовательно, недоступны для объекта класса В. вам необходимо объявить их общедоступными или защищенными. Проверьте свой С++ Справочное руководство по Java для классов хранения.


CPallini

Эй, Ричард, это Ява! :-)

Richard MacCutchan

Ой!

Jochen Arndt

Проверьте свой С++ Справочное руководство по Java

Richard MacCutchan

Я только что проверил свою ссылку на C++ и не смог найти System. out ... :(

Member 13203712

Но когда класс B наследует класс A, они должны автоматически быть доступны методу в классе B.

Richard MacCutchan

Нет, если только они не объявлены публичными или защищенными. Видеть private (C++)[^]