[JAVA] 메소드 오버라이딩

Coastby·2022년 9월 26일
0

LIKELION Back-End School

목록 보기
17/61

○ 오버라이딩이란?

  • 자식 클래스가 부모 클래스의 상속받은 메소드를 자신의 필요에 맞추어 재정의
  • 부모 함수와 이름, return 타입, 인자는 동일하고 함수 바디만 다르다.
    1) 접근 제어자를 조상 클래스의 메서드보다 좁은 범위로 변경할 수 없다.
    2) 예외는 조상 클래스의 메서드보다 많이 선언할 수 없다.
    3) 인스턴스 메서드를 static 메서드로 또는 그 반대로 변경할 수 없다.

⭐️ 설계의 핵심 : 공통 기능은 부모 (클래스 또는 인터페이스)로 뺀다.

  • 애노테이션 (@Override) : 컴파일에는 영향을 안 미치지만, 개발자 또는 컴파일러에게 알려준다. 붙이면 부모에게 똑같은 함수가 있다는 것을 의미한다.
class Shape {
	public void draw () {
		System.out.println("도형을 그립니다.");
	}
}

class Rectangle extends Shape {
	@Override
	public void draw() {
		System.out.println("사각형을 그립니다.");
	}
}

class Circle extends Shape {
	public void draw() {
		System.out.println("원을 그립니다.");
	}
}

class Triangle extends Shape {
	public void draw() {
		System.out.println("삼각형을 그립니다.");
	}
}


public class OverridingTest {

	public static void main(String[] args) {
		
		//1번
		Shape shape = new Shape();
		shape.draw();
		
		//2번
		Rectangle rec = new Rectangle();
		rec.draw();

	}

}

//result
도형을 그립니다.
사각형을 그립니다.

○ 오버로딩?

  • println이 대표적인 오버로딩
  • 같은 함수 이름으로 파라미터의 데이터타입 또는 갯수를 달리할 수 있다.

오버로딩 : 기존에 없는 새로운 메서드를 정의하는 것 (new)
오버라이딩 : 상속받은 메서드의 내용을 변경하는 것 (change, modify)

profile
훈이야 화이팅

0개의 댓글