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
'프로그래밍 언어 > Java' 카테고리의 다른 글
[Java] 제어자 (static, final, abstract) (0) | 2022.10.13 |
---|---|
[Java] 키워드 this & super, 접근제한자(public, private) (0) | 2022.10.07 |
[Java] Garbage Collecting, package(패키지), 데이터타입, 객체지향 프로그래밍 기술(상속, 은닉, 다형성) (0) | 2022.10.06 |
[Java] object(객체), class(클래스), 변수(멤버/지역), 생성자(constructor) (0) | 2022.10.05 |
[Java] 객체 배열(Array of Objects), 메서드 실행, 피보나치 수열 (0) | 2022.10.05 |