[개인공부] 7-5 단일 상속(Single Inheritance)과 Object 클래스

Walter Mitty·2022년 11월 15일
0

개인공부

목록 보기
10/40
post-thumbnail

단일 상속(Single Inheritance)

  • Java는 단일 상속만을 허용한다.
    • 즉, 하나의 부모만 상속할 수 있다.
    ⚡︎⚡︎⚡︎ ERROR ⚡︎⚡︎⚡︎
    class TvDVD extends Tv, DVD { // 조상은 하나만 허용가능
    	//...
    }
  • 비중이 높은 클래스 하나만 상속관계로, 나머지는 포함관계로 한다.

Object 클래스

  • Object 클래스는 모든 클래스의 조상이다
    • 부모가 없는 클래스는 자동적으로 Object 클래스를 상속받게 된다.
      • 즉 상속받지 않은 클래스는 Object 클래스를 자동 상속!
        상속을 받지 않은 Tv 클래스는 컴파일러가 자동으로 extends Object를 붙여준다.

  • 모든 클래스는 Object 클래스에 정의된 11개의 메서드를 상속받는다.
    • toString() : 클래스이름@객체주소값을 String 타입으로 반환한다.
    • equals(Object obj)
    • hashCode()
    • ...

  • 상속계층도
    • 보면, Object가 제일 위에있다!

오버라이딩(overriding)

오버라이딩

  • 상속받은 조상의 메서드를 자신에 맞게 변경하는 것
    • 같은 이름을 하고 있어서 main 에서 getLocation()을 호출하면, 둘 중 오버라이딩 된 함수가 호출된다
    //2차원 좌표
    class Point {
    		int x;
        int y;
      
        String getLocation() {
      	  return "x: " + x + ", y: " + y;
        }      
    //3차원 좌표상의 점
    class point3D extends Point {
    		  int z;
      
        //overriding → 선언부는 변경불가능 /  내용{} 변경가능
        String getLocation() {
      	  return "x: " + x + ", y: " + y + ", z: " + z;
        }
    }

오버라이딩 조건

  1. 선언부가 조상 클래스의 메서드와 일치해야 한다.
    1-1 선언부: 반환타입, 메서드이름, 매개변수 목록
  1. 접근 제어자를 조상 클래스의 메서드보다 좁은 범위로 변경할 수 없다.
    2-2 public / protected / (default)거의안씀 / private

  2. 예외는 조상 클래스의 메서드보다 많이 선언할 수 없다.
    3-1 Parent 클래스의 parentMethod는 예외가 2개, Child 클래스의 parentMethod는 예외가 1개로, 자손이 예외가 더 적으므로 오버라이딩 가능!


오버로딩 vs 오버라이딩

  • 오버로딩 : 기존에 없는 새로운 메서드를 정의하는 것(new)
  • 오버라이딩 : 상속받은 메서드의 내용을 변경하는 것(change, modify)

0개의 댓글