다형성 : 일반인에게 코딩을 가르쳐 개발자로 표현하겠다.
메서드 오버라이딩 : 부모가 준 현금재산을 비트코인으로 바꿔 사용하겠다
오버라이딩의 2가지 조건
- 부모 클래스의 메서드와 시그너처(메서드명,매개변수 타입) 및 리턴타입이 동일해야 한다
- 부모 클래스의 메서드보다 접근 지정자의 범위가 같거나 넓어야 한다.
class A {
void funA() {
System.out.println("A");
}
}
class B extends A {
@Override //부모클래스 funA함수 재정의
void funA() {
System.out.println("B");
}
}
public class OverRidding {
public static void main(String[] args) {
A a = new A();
B b = new B();
a.funA(); // 결과값 : A
b.funA(); // 결과값 : B
}
}
인스턴스 필드의 중복
- 자식 클래스에서 부모 클래스에 존재하는 필드명과 동일한 필드명을 추가하여도 필드오버라이딩은 되지 않는다.
- 정적(static)필드 또한 오버라이딩 되지 않는다.
- 부모의 정적(static)메서드는 오버라이딩 되지 않는다.
class A{
funA(){
System.out.println("A");
}
}
class B extends A{
@Override
funA(){
super.funA();
System.out.println("B");
}
}
public static main(String[] args){
A a = new A();
B b = new B();
a.funA(); // 결과값 : A
b.funA(); // 결과값 : A
} // B
class A{
A(){
System.out.println("A 생성자");
}
}
class B extends A{
B(){
System.out.println("B 생성자");
}
}
public static main(String[] args){
A a = new A(); // 결과값 : A 생성자
B b = new B(); // 결과값 : A 생성자
} // B 생성자