카테고리 없음

메소드 오버로딩, 오버라이딩

스물훈 2020. 4. 17. 12:45

**Method Overloading(메소드 중복 정의)

- 하나의 클래스에 메소드 이름은 간고 매개변수의 개수나 자료형이 다른 메소드가 존재하는 경우.

- 메소드를 호출할 때 대입한 매개변수를 보고 실행할 메소드를 결정.

 

**Method Overriding(메소드 재정의)

- 상위 클래스에 존재하는 메소드를 하위 클래스에서 재정의 하는것.

- 오버로딩은 이름은 같은데 매개볒수의 개수나 자료형이 다른 것이고, 오버라이딩은 이름, 매개변수의 개수 및 자료형도 동일.

- 목적은 상위 클래스에서 제공되는 메소드의 기능이 부족해서 기능을 추가하는 것.

- 상위 클래스의 메소드의 내용이 존재하는 경우라면 반드시 상위 클래스의 메소드를 호출해주어야함.

- 메소드의 기능이 파괴하는 것이라면 자신의 코드를 먼저 작성하고 상위 클래스의 메소드를 호출하고

   파괴하는것이 아니라면 상위 클래스의 메소드를 호출하고 자신의 코드를 작성해야 함.

 

*주의사항

- 메소드 오버라이딩을 할 때 하위 클래스에서의 접근 지정자가 상위 클래스에서보다 크거나 같아야 함.

  public > protected > package(생략) > private

  set > get

  오버라이딩은 근본적으로 기능을 확장하는 개념이기 때문

 

오버라이딩된 메소드를 명시적으로 표현하기 위해 @Override 라는 어노테이션을 사용할 수 있는데,

이 어노테이션이 붙은 메소드가 상위 클래스에 존재하지 않는다면 에러.

*어노테이션: 컴파일 할 때나 실행할 때 프로그래밍언어의 코드로 변경되서 특별한 기능을 수행해주는 명령어

 

매개변수 전달방법

- 데이터는 기본형(데이터가 1개)과 참조형(데이터가 0개 이상)

- 메소드의 매개변수로 기본형을 전달하면 메소드 안에서 매개변수의 데이터를 변경해도

  전달한 데이터는 변경되지 않음.(call by value)

- 참조형을 전달했는데 참조형 내부의 데이터를 변경하면 전달한 데이터도 변경됨.

   (call by reference)

- 메소드의 매개변수로 배열이나 인스턴스를 대입하는 경우 대입한 배열이나 인스턴스의 내용이 변경될 수 있다.