У меня есть класс цвета rgb и класс луковицы. мой вопрос, что это правильный способ вернуть GetColor в термометру класса света: первый вариант:getter возврат нового экземпляра или копия
public RGBColor getColor()
{
return _color;
}
второй вариант:
public RGBColor getColor()
{
return new RGBColor(_color);
}
BulbLight класс: класс
private RGBColor _color;
public LightBulb (int red, int green, int blue)
{
_color = new RGBColor(red,green,blue);
}
RGBColor :
public class RGBColor {
private int _red;
private int _green;
private int _blue;
public RGBColor()
{
_red = 0;
_green = 0;
_blue = 0;
}
public RGBColor(RGBColor other)
{
_red = other._red;
_green = other._green;
_blue = other._blue;
}
//... getterg and setters for red,green,blue
}
Обновленный qeustion: мой друг сказал, что первый вариант - сглаживание, я не согласен с ним. он прав?
Что такое класс RGBColor? Можете ли вы обеспечить реализацию? –
Мы не знаем, что такое «RGBColor», поэтому мы не можем ответить. Если вы скажете 'return _color', вы вернете ссылку на тот же объект, к которому относится ваша личная переменная.Если ваш класс позже изменит значение 'RGBColor' (если он не является неизменным), возвращаемое значение также укажет на измененный объект. Но если вы вернете «новый RGBColor (_color)», возвращаемое значение будет ссылкой на другой объект, поэтому, если вы его измените, другое не будет изменено. Какой правильный? Недостаточно информации, чтобы рассказать. – ajb
добавлена реализация для RGBColor – AlexTheLion