원지의 개발
article thumbnail
728x90

overriding (메서드 재정의) - 상속과 짝궁

  • 상속받은 메서드의 일부를 자식클래스에서 행위를 바꾸거나 보완하기 위해 다시 정의해서 사용하는 것
  • 부모클래스에서 특별한 용도로 사용하던 메서드를 자식클래스에서 다른 용도로 사용할 때 필요
    = 특정 메서드는 자식 클래스가 사용하기에 적합하지 않을 수도 있음
  • 자식클래스에서 재정의되었다면 자식객체를 통해 메서드를 호출했을 때 새롭게 재정의된 메서드가 호출

규칙

예제 - return 100은 뭐지..?

자바의 정석 실습

package file;

public class Practice  extends Object{

	int x;
	int y;
	
	Practice(int x, int y) { // 생성자 생성 및 초기화
		this.x = x;
		this.y = y;
	}
	
//	Object클래스의 toString()을 오버라이딩
	public String toString() {
		return "x: " + x + ", y: " + y;
	}

}
package file;

public class MainClass {

	public static void main(String[] args) {
		Practice p = new Practice(3,5); // 한번에 초기화
		
//		System.out.println("p.x="+p.x+", p,y:"+p.y);
	 
		System.out.println(p); // x: 3, y: 5 출력
//		↑ ↓ 같은 결과값
		System.out.println(p.toString());
		
	}
}

overloading (메서드 중복)

  • 암기! 동일한 메서드를 여러개 만듦
  • 메서드나 생성자의 중복 선언을 허용
  • 메서드 또는 생성자를 선언할 때 이름은 같지만 매개 변수의 유형이나 개수를 다르게 선언해 놓는 것
  • 하나의 메서드로 매개 변수의 유형에 따라 다른 동작이 실행되게 함
  • 완전 똑같이는 X, 똑같은 이름으로 가능 O
ctrl + 클릭: 메서드로 데려다 줌

예제


Quiz

Quiz05 - 오버라이딩(재정의) Account

오버라이딩

Quiz06.overload - 오버로딩(중복) Basic

오버로딩

Quiz06 - Calculator

/* 요구사항
		 * 부모 Calculator 선언하세요.
		 * 자식 Computer클래스 생성 합니다.
		 *
		 * Calculator 클래스
		 * Calculator의 멤버변수 int result, double pi를 선언하세요
		 * Calculator의 메서드
		 * add(int) - result에 값을 누적시키는 기능
		 * circle(int) - pi를 이용해서 원의 넓이 = rect를 리턴하는 기능  (원의넓이: PI * r * r)
		 * ------------------------------------------------------------------
		 * Computer 클래스의 메서드
		 * circle() - 메서드를 오버라이딩 하고, pi대신 하는 Math.PI를 사용해서 원의 넓이를 구하세요.
		 * rect(double) - 정사각형의 넓이 를 리턴
		 * rect(double, double) - 직사각형의 넓이 를 리턴
		 * rect(double, double, double) - 직육면체의 넓이 를 리턴
		 * 
		 * 
		 * 메인클래스에서 Calculator, Computer를 생성하고 메서드를 확인하세요.
		 */

오버라이딩

Quiz07 - 객체 배열 오버로딩 PrintArray

객체 배열 오버로딩

  • int[ ] 를 매개변수로 가진 메서드 생성 → 배열의 모형을 문자열로 리턴하려면 문자열 str 출력방법 사용
    String str = "[" 설정 후 반복문을 돌리면서 옆에 붙이기
  • 나머지는 매개변수만 다르게 설정하여 똑같이 사용

오늘 하루

더보기

기억에 남는 부분

- 상속된 메서드의 일부는 자식 클래스에서 재정의하는 것 - 오버라이딩

- 동일한 메서드(같은 이름으로)를 매개변수의 개수나 타입을 다르게 이용하며 만드는 것 - 오버로딩

 

어려운 부분

- quiz07객체배열 오버로딩: 배열의 모형을 문자열로 출력할 때 어떻게 해야하는지 생각이 안났음

 

문제 해결 부분

- quiz06 calculator 오버라이딩, 오버로딩 적절히 사용함

 

728x90
profile

원지의 개발

@원지다

250x250