Overriding
상속받은 자식 클래스가 부모 클래스의 메소드를 변경할 수 있는 것.
코드 예제
class cal1{
int left, right;
public void cal1(int left, int right) {
this.left = left;
this.right = right;
}
public void setOprands(int left, int right) {
this.left = left;
this.right = right;
}
public void sum() {
System.out.println(this.left + this.right);
}
}
class Sustractcal extends cal1 {
public Sustractcal(int left,int right) {
this.left = left;
this.right = right;
}
public void substract() {
System.out.println(this.left - this.right);
}
}
public class cal{
public static void main(String[] args) {
Sustractcal c1 = new Sustractcal(10,20);
c1.sum();
}
}
substractcal 은 cal1을 상속받은 자식 클래스 입니다.
자식 클래스인 substractcal에는 sum 메소드가 없습니다.
따라서 java는 자연스럽게 부모 클래스로 올라가 sum함수를 찾게됩니다.
그렇다면 이 예제에서 Overriding 개념을 적용하면 어떻게 될까요?
바로 위와 같은 코드를 추가해서 재정의하면 됩니다.
추가 코드 예제
class cal1{
int left, right;
public void cal1(int left, int right) {
this.left = left;
this.right = right;
}
public void setOprands(int left, int right) {
this.left = left;
this.right = right;
}
public void sum() {
System.out.println(this.left + this.right);
}
}
class Sustractcal extends cal1 {
public Sustractcal(int left,int right) {
this.left = left;
this.right = right;
}
public void sum() {
System.out.println("Substractcal에서 재정의 된 "+(this.left + this.right+"입니다"));
}
public void substract() {
System.out.println(this.left - this.right);
}
}
public class cal{
public static void main(String[] args) {
Sustractcal c1 = new Sustractcal(10,20);
c1.sum();
}
}
Overriding 의 조건
1. 부모 메소드의 형식과 자식 메소드의 형식이 같아야 합니다.
형식: 1) 메소드의 이름 2) 메소드 매개변수의 숫자와 데이터 타입 그리고 순서 3) 메소드의 리턴 타입
'프로그래밍 언어 > Java' 카테고리의 다른 글
[Android java] background custom 그라데이션 그림자 주는 법 (0) | 2021.11.17 |
---|---|
[java] 9강 overloading 이란? (0) | 2021.11.16 |
[java 7강] 상속과 생성자 (2/2) (0) | 2021.11.12 |
[java 7강] 상속과 생성자 (1/2) (0) | 2021.11.11 |
[Android java] button 여러 속성 동시에 커스텀하는 방법 (0) | 2021.11.10 |