Я знаю, что это глупый вопрос, но у меня все еще есть сомнения, которые нужно прояснить.
Мой вопрос: почему мы не можем определить класс как защищенный
?
Я знаю, что мы не можем, но почему? Должна быть какая-то конкретная причина. В 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?