: 부모클래스의 메소드를 상속받으면서 그 메소드를 그대로 쓰지 않고 재정의하여 기능 변경하는 것
=덮어쓰기
class Calculator {
int left, right;
public void setOprands(int left, int right) {
this.left = left;
this.right = right;
}
public void sum() {
System.out.println(this.left + this.right);
}
public void avg() {
System.out.println((this.left + this.right)/2);
}
}
class SubCalculator extends Calculator {
public void sum() {
System.out.println("실행결과는"+(this.left+this.right)+"입니다.");
}
public void substract() {
System.out.println(this.left - this.right);
}
}
public class CalculatorDemo {
public static void main(String[] args) {
SubCalculator c1 = new SubCalculator();
c1.setOprands(10, 20);
c1.sum();
c1.avg();
c1.substract();
}
//
실행결과는30입니다.
15
-10
오버라이딩의 조건, 제약사항
- 오류
class Calculator {
int left, right;
public void setOprands(int left, int right) {
this.left = left;
this.right = right;
}
public void sum() {
System.out.println(this.left + this.right);
}
public void avg() {
System.out.println((this.left + this.right)/2);
}
}
class SubCalculator extends Calculator {
public void sum() {
System.out.println("실행결과는"+(this.left+this.right)+"입니다.");
} public int avg() { => 부모-자식클래스의 메소드형식 불일치 => 에러 발생 (둘의 리턴 데이터타입, 이름, 매개변수(숫자,순서, 데이터타입) 일치해야 함) ===> 이러한 메소드의 형식 = 서명(signature)
return (this.left + this.right)/2;
}
public void substract() {
System.out.println(this.left - this.right);
}
}
public class CalculatorDemo {
public static void main(String[] args) {
SubCalculator c1 = new SubCalculator();
c1.setOprands(10, 20);
c1.sum();
c1.avg();
c1.substract();
}
- 중복 제거
class Calculator {
int left, right;
public void setOprands(int left, int right) {
this.left = left;
this.right = right;
}
public void sum() {
System.out.println(this.left + this.right);
}
public int avg() { return ((this.left + this.right)/2); return super.avg();
}
}
class SubCalculator extends Calculator {
public void sum() {
System.out.println("실행결과는"+(this.left+this.right)+"입니다.");
}
public int avg() {
return (this.left + this.right)/2;
}
public void substract() {
System.out.println(this.left - this.right);
}
}
public class CalculatorDemo {
public static void main(String[] args) {
SubCalculator c1 = new SubCalculator();
c1.setOprands(10, 20);
c1.sum();
c1.avg();
c1.substract();
}
}
'Programming > 자바' 카테고리의 다른 글
생활코딩 자바 - 클래스패스 ?? (0) | 2022.04.06 |
---|---|
생활코딩 자바 - overloading (0) | 2022.04.02 |
생활코딩 자바 - 상속과 생성자 ?? (0) | 2022.04.02 |
생활코딩 자바 - 상속 (0) | 2022.04.02 |
생활코딩 자바 - 생성자 (0) | 2022.04.02 |