본문 바로가기

카테고리 없음

자바 접근 제어자와 오버라이딩 super

private 멤버의 접근 가능범위

 

public 멤버 일 때

 

default

 

protected

 

부모 클래스로 부터 상속받은 메서드를 다시 재정의 하는 것을 오버라이딩이라고 한다.

오버라이딩의 조건

선언부가 부모 클래스의 메서드와 일치해야 한다.

접근 제어자를 부모 클래스의 메서드 보다 좁은 범위로 변경을 할 수 없습니다.

예외는 부모 클래스의 메서드 보다 많이 선언할 수 없다.

IF 다른 패키지에 각자 다른 클래스가 있다고 정의하자 pulic은 서로 다른 패키지에 있어도 접근이 가능하다.

-----------------------------------------------------------------------------------------------------------------------------------------------------------------

 

super 키워드

부모 클래스로부터 상속받은 필드나 메소드를 자식 클래스에서 참조하는데 사용하는 참조 변수입니다.

class Parent{int a =10; }
class Child extends Parent{
void show(){
    System.out.println(a);
    System.out.println(this.a);
    System.out.println(super.a);;
    }
}

public class Main{
    public static void main(String[] args){
        Child ch = new Child();
        ch.show();// 10 10 10 출력

}

}
class Parent{
    int a =10;
}

class Child extends Parent{
    int a =20;
    void show(){
        System.out.println(a);
        System.out.println(this.a);
        System.our.println(super.a);
}
}

public class Main{
    public static void main(String[] args){
        Child ch = new Child();
        ch.show();// 20 20 10
    }
}

 

 

 

 

다형성이란 하나의 객체가 여러 가지 타입을 가질 수 있는 것을 의미

 

 

class Parent { ... }
class Child extends Parent { ... }
...
Parent pa = new Parent(); // 허용
Child ch = new Child();   // 허용
Parent pc = new Child();  // 허용
Child cp = new Parent();  // 오류 발생.

 

 

 

부모 클래스는 자식 클래스의 함수 접근이 불가 하다. mammal을 다시 자식 객체로 강제로 형변환을 하면 swimming 함수에 접근이 가능해서 호출이 가능해짐