Почему класс не может быть определен как защищенный?

Я знаю, что это глупый вопрос, но у меня все еще есть сомнения, которые нужно прояснить.

Мой вопрос: почему мы не можем определить класс как защищенный ?

Я знаю, что мы не можем, но почему? Должна быть какая-то конкретная причина. В C ++ мы можем передать параметр функции по ссылке (объявив его как указатель или ссылочную переменную), и если мы изменим его внутри функции, изменения ...


Я запутался в следующем:
В C ++ мы можем передать параметр функции по ссылке (объявив его как указатель или ссылочную переменную), и если мы изменим его внутри функции, изменения будут отражены в вызывающей стороне, когда функция вернется.
Этого не происходит в java, и я не уверен, что понимаю, почему.

Например, это метод из объекта X

public boolean aMethod(int id, myClass aClass)
{
   //do some logic
   aClass = new MyClass();
   //configure argument object aClass
   return true;
}

В вызывающем коде :

//some code processing
myClass obj = null;
if(X.aMethod(2,obj))
{
  obj.methodA();//start using the object
}

Я использую его в C ++, т.е. для возврата результата, который уведомляет о том, что параметр функции можно использовать, но в java это не работает.
Я вхожу в ветвь if (X.aMethod (2, obj)), но obj имеет значение null. Почему оно равно нулю?
Разве я не назначил адрес памяти из кучи, используя new внутри метода aMethod (int id, myClass aClass)? Я не передаю "адрес" obj в функции? Я ожидал, что объект будет правильно сконструирован и пригоден для использования в вызывающем коде. Я что-то неправильно понял, касающийся памяти в java?

6
задан Cratylus 6 October 2010 в 04:52
поделиться