Iheritance[Java]

SnowCat·2023년 6월 2일
0

Java - Language

목록 보기
8/17
post-thumbnail

상속

  • 상속이란 기존의 클래스에 기능을 추가하거나 재정의해 새로운 클래스를 정의하는 것을 의미함
  • 상속을 통해 기존의 클래스를 재활용할 수 있고, 자식 클래스 설계 시 중복되는 멤버를 재활용할 수 있고, 다형성을 활용하는데 도움이 됨
  • 자식 클래스에는 부모 클래스의 필드와 메소드만이 상속되며, 생성자와 초기화 블록은 상속되지 않음
  • 부모 클래스의 접근 제어가 private, default로 설정된 경우 자식 클래스에서 상속받지만 접근은 불가능함에 유의
class Parent {
    private int a = 10; // private 필드
    public int b = 20;  // public 필드
}

class Child extends Parent {
    public int c = 30;  // public 필드

    void display() {
       System.out.println(a); // 상속받은 private 필드 참조
       System.out.println(b);    // 상속받은 public 필드 참조
       System.out.println(c);    // 자식 클래스에서 선언한 public 필드 참조
    }
}

Object 클래스

  • Object클래스는 자바에서 모든 클래스의 부모 클래스를 의미함
  • 모든 클래스는 Object 클래스의 모든 필드와 메서드를 상속받게 되며, 모든 멤버를 자유롭게 사용할 수 있음

super, super()

  • super 키워드는 부모 클래스로부터 상속받은 필드나 메서드를 자식 클래스에서 참조하는데 사용하는 변수를 의미함
  • 자식 클래스에서 부모 클래스의 요소에 접근하때는 super 키워드를 사용함
    this와 마찬가지로 super는 인스턴스 메서드에서만 사용 가능하며, 클래스 메서드에서는 사용 불가능함
```java
class Parent {
    int a = 10;
}

class Child extends Parent {
    int a = 20;

    void display() {
        System.out.println(a); //20
        System.out.println(this.a); //20
        System.out.println(super.a); //10
    }
  • 자식 클래스의 생성자에서 부모 클래스의 생성자를 호출해야 하는 경우에는 super() 메서드를 사용함
  • super()를 사용하면 부모 클래스에서 Object 클래스까지의 생성자를 자동으로 호출해줌
    만약 생성자를 선언하지 않으면 기본 생성자에 super(); 구문을 자동으로 생성함
class Parent {
    int a;

    Parent() { a = 10; }
    Parent(int n) { a = n; }
}

class Child extends Parent {
    int b;
    
    Child() {
        super();
        b = 20;
    }

메소드 오버라이딩

  • 자식 클래스에서 부모 클래스의 시그니쳐가 같은 메서드를 다시 정의하는 것을 메서드 오버라이딩이라 함
  • 메서드 오버라이딩을 위해서는 메서드의 선언부가 부모 클래스와 일치해야 하며, 반환 타입은 서로 변환가능해야 하며, 접근 제어자의 범위가 같거나 더 넓어야하고, 더 큰 범위의 예외를 선언해서는 안됨

class Parent {
    void display() { System.out.println("This is parent."); }
}

class Child extends Parent {
    void display() { System.out.println("This is child."); }
}

출처:
http://www.tcpschool.com/java/java_inheritance_concept

profile
냐아아아아아아아아앙

0개의 댓글