본문 바로가기
개발/자바

오버라이딩(Overriding) vs 오버로딩(Overloading) && toString, equals 오버라이딩 해보기

by kakk789 2021. 12. 27.

메소드 오버로딩(Overloading)

  • 메서드 명을 중복하여 정의할 수 있음(Overload)
    단,
     중복하여 정의하기 위해서는 매개변수의 개수나 자료형이 달라야 함.

메소드 오버라이딩(Overriding)

  • 상속 관계에 있을 때에 부모 클래스의 메소드가 자식 클래스에는 맞지 않아 재정의 하는 것을 말합니다.
  • 재정의 시 메소드 이름, 매개변수의 개수, 자료형이 일치되게 재정의 해야합니다.

부모클래스 fly( )

    public void fly() {
		if(wings==true) {
			System.out.println(color+"색 "+name+"이(가) 펄럭펄럭 ~");
		}
		else
		{
			System.out.println(color +"색 "+name+"이(가) 날수 없어요");
		}
	}

자식클래스 fly( ) 재정의

    public void fly() {
		System.out.println(color+"색 "+name+"이(가) 슝~");
	}

자바에서 모든 클래스의 조상 클래스는 Object 클래스이다.

  • 배열과 객체는 기본적으로 주소값을 가리키는 참조변수 이기때문에 == 비교 연산자 사용 불가능
  • 부모 Object 클래스의 equals 를 재정의하여 비교해보자.
* 중요
Object p 매개변수를 (Box) 클래스로 타입캐스팅 하여 b 로 저장하는 것이 중요함.

Box 클래스에서 Object 클래스의 equals 함수 재정의

class Box{
	double width;
	double length;
	double height;
	public Box(double width, double length, double height) {
		this.width = width;
		this.length = length;
		this.height = height;
	}	
	public boolean equals(Object p) { //equals 함수를 재정의
		boolean flag = false;
		Box b = (Box)p;  //매개 변수로 입력 받은 p를 비교할 Box으로 타입캐스팅 후 b로 저장
		if(b.width==width && b.length==length && b.height == height) {
			flag = true;
		}
		return flag;
	}
}

Main 함수

	public static void main(String[] args) {
		
		Box b1 = new Box(10, 20, 30);
		Box b2 = new Box(10, 20, 30);
		
		if (b1.equals(b2)) {
			System.out.println("같아요");
		}
		else {
			System.out.println("달라요");
		}

	}

만일 객체를 바로 출력하면 주소 값이 바로 출력되는데 이때 사용되는 함수는 toString() 함수로 기본적으로 생략 되어져 있음

객체 바로 출력

toString, equals

  • 자바의 제일 조상인 Object의 메소드이며 필요하다면 자신의 클래스에 맞도록 재정의하여 사용할 것

toString() 오버라이딩 하는 경우 

  • 출력문에 객체를 표현하고자 할 때 사용
  • toString 은 object의 주소를 그대로 출력

equals() 오버라이딩 하는 경우

  • 서로의 동일한 속성값을 갖고있는지 판별하려면equals 메소드를 재정의하여 사용
  • equals는 주소 값에 저장된 값이 같은지 비교
반응형

'개발 > 자바' 카테고리의 다른 글

Interface  (0) 2021.12.27
다형성  (0) 2021.12.27
자바 상속  (0) 2021.12.27
매개변수(parameter), 인자(argument) 차이점  (0) 2021.12.26
생성자, this  (0) 2021.12.26

댓글