Java/Java 이론

[JAVA] 상속 (2)

2주녘 2023. 8. 8. 10:45
반응형
객체 지향 패러다임의 핵심

객체와 객체간의 상호작용 그리고 관계를 형성해 나가는 것

 

오버라이딩 : 상속에서는 부모메서드의 재정의가 가능하다.

조상클래스로부터 상속받은 메서드의 내용을 변경하는 것을 오버라이딩이라고 한다. 상속받은 메서드를 그대로 사용하기도 하지만, 자손 클래스 자신에 맞게 변경해야하는 경우도 존재한다. 이럴 때 조상의 메서드를 오버라이딩한다 라고 한다.

 

class Cal2 extends Cal {

 

public Cal2() {

System.out.println("Cal2() 생성자 호출 - 자식");

}

 

public int minus(int n1, int n2) {

return n1 - n2;

}

@Override // 어노테이션 이라 부른다.

public int mutiply(int n1, int n2) {

if(n1 == 0 || n2 == 0) {

System.out.println("0을 입력하였습니다.");

}

return n1 * n2;

} // 부모메서드를 재정의

위의 예시처럼 부모 클래스의 minus 메서드를 자식 클래스에서 재정의 한 것을 오버라이딩이라고 한다.

 

오버라이딩의 조건

오버라이딩은 메서드의 내용만을 새로 작성하는 것이므로 메서드의 선언부(메서드 이름, 매개변수, 반환타입)는 조상의 것과 완전히 일치해야한다.

다만, 접근 제어자와 예외는 제한된 조건 하에서만 다르게 변경할 수 있다.

 

오버로딩과 오버라이딩
  • 오버로딩 : 기존에 없는 새로운 메서드를 추가하는 것, new
  • 오버라이딩 : 조상으로 부터 상속받은 메서드의 내용을 변경하는 것, change, modify

package ch99;

 

public class Parent {

void parentMethod() {}

}

 

class Child extends Parent{

 

void parentMethod() { // 오버라이딩

// .....

}

void parentMenthod(int i) {} // 오버로딩

 

void childMethod() {}

void childMethod(int i) {} // 오버로딩

void childMethod() {} // 에러, 중복정의 됨

 

}

반응형