본 게시물은 프로그래머스 FOO님의 실무 자바 개발을 위한 OOP와 핵심 디자인 패턴을 듣고 작성된 게시물입니다.
public class Parent {
public int parentPublicInt;
protected int parentProtectedInt;
private int parentPrivateInt;
public void someMethod() {
System.out.println("Parent someMethod");
}
}
public class Child extends Parent {
public void anotherMethod() {
System.out.println("Child anotherMethod");
this.parentProtectedInt = 0;
this.parentPublicInt = 0;
// this.parentPrivateInt = 0; // 상속 되지 않았기 때문에 불가능!
}
// 어노테이션은 필수는 아니지만 실수 방지를 위해 해놓는 것이 좋다.
@Override
public void someMethod() {
System.out.println("Child someMethod");
}
}
Child 클래스가 Parent 클래스를 상속(extends)받았다.
상속을 받으면 자식 클래스는 부모 클래스의 필드와 메서드에 접근이 가능하다.
단, 부모 클래스의 필드나 메서드의 접근 제어자가 private일 때는 상속이 불가하다!
🤔 오버라이딩
오버라이딩(Overriding)이란 자식 클래스에서 부모 클래스의 메서드를 상속받아서 재정의하는 것을 의미한다.
주의할 것은 메서드의 시그니처는 모두 같아야한다.(메서드 이름, 반환 타입, 매개변수 등)
// 어노테이션은 필수는 아니지만 실수 방지를 위해 해놓는 것이 좋다.
@Override
public void someMethod() {
System.out.println("Child someMethod");
}
@Override 어노테이션은 의무는 아니다.
하지만, 부모 클래스의 메서드를 상속받았다는 것을 알려주고 실수 방지를 위해서 사용하는 것이 좋다.
🤔 오버로딩
오버로딩(Overloading)은 동일한 메서드 이름으로 파라미터, 리턴 타입이 다른 메서드를 여러 개 정의하는 것을 의미한다.
주의할 것은 리턴 타입만 다르게 하여 오버로딩하는 것은 불가하다.
public int add(int num1, int num2) {
return num1 + num2;
}
// return 타입만 다르게 오버로딩은 불가능
public long add(int num1, int num2) {
return num1 + num2;
} --> 불가
'java' 카테고리의 다른 글
동일성 vs 동등성 (0) | 2023.08.17 |
---|---|
stream API + Optional (0) | 2023.07.15 |
stream API (0) | 2023.07.10 |
람다식 (0) | 2023.07.09 |
Optional (0) | 2023.07.09 |