[불변 클래스] 불변 클래스 디자인
2017-1-18 11:40:25 oye
다섯 가지 원칙
final
/**
* ( )
* @author zWX332481
*/
public final class Complex
{
private final double re;
private final double im;
public Complex(double re, double im)
{
this.re = re;
this.im = im;
}
/**
*
* @return double
*/
public double realPart()
{
return re;
}
/**
*
* @return double
*/
public double imaginaryPart()
{
return im;
}
public Complex add(Complex c)
{
return new Complex(re + c.re, im + c.im);
}
public Complex subtract(Complex c)
{
return new Complex(re - c.re, im - c.im);
}
public Complex multiply(Complex c)
{
return new Complex(re * c.re - im * c.im, re * c.im + im * c.re);
}
public Complex divide(Complex c)
{
double tmp = c.re * c.re + c.im * c.im;
return new Complex((re * c.re + im * c.im) / tmp, (im * c.re - re * c.im) / tmp);
}
@Override
public boolean equals(Object o)
{
if (o == this)
return true;
if (!(o instanceof Complex))
return false;
Complex c = (Complex) o;
return Double.compare(re, c.re) == 0 && Double.compare(im, c.im) == 0;
}
@Override
public int hashCode()
{
return (17 + hashDouble(re)) * 31 + hashDouble(im);
}
private int hashDouble(double val)
{
long longBits = Double.doubleToLongBits(re);
return (int) (longBits ^ (longBits >>> 32));
}
}
Analysis:
Complex
와 허부re
에 대해 클래스는 im
로 정의하고 final
방법만 제공하여 클래스가 창설된 후에 바꿀 수 없음을 보장한다이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.