본문 바로가기

Java

JAVA 클래스의 상속/ 클래스 상속 개념

클래스의 상속

 클래스의 상속이란

클래스의 상속이란 기존에 존재하는 클래스의 필드와 메소드를 물려받아 새로운 클래스를 만드는 것을 말한다.

 

 클래스를 상속하는 이유와 개념

클래스를 새로 만들지 않고 상속을 받아 사용하면 좀 더 효율적이다.

예를 들어 자동차를 만드는 클래스가 있다고 가정했을 경우

속성(필드):     색깔, 좌석 수, 속도가 될 수있고

기능(메소드):  속도 올리기, 속도 내리기

이 속성과 기능은 승용차, 트럭 모두 동일하게 사용되는 공통 클래스를 만든 다음, 그 클래스를 상속 받아 오버라이드 하여 필요한 필드와 메소드만 추가해서 사용하는 것이다.

 

만약, 클래스를 상속하지 못한다면 승용차 클래스로 트럭을 만들지 못해 '비슷하지만 다른' 클래스들이 넘쳐 날 것이고,

어떤 클래스를 안이하게 복사해서 새로운 클래스를 만들어서는 안된다고 할 만큼, 비슷한 클래스를 유지보수하는 일은 무척 번거로운 일이다.

 

공통클래스를 상위 클래스, 부모 클래스, 슈퍼 클래스라고 하고

공통클래스를 상속 받은 클래스를 하위클래스, 자식 클래스, 서브 클래스라고 한다.

 

상속을 구현하는 문법으로 extends(확장한다.)를 사용한다.

 

 클래스 상속 구조

class 새로운 클래스 이름 extends 상속할 클래스 이름 {

  속성 (필드)

  기능 (메소드)

}

 

 구조 예시

//부모 클래스 Car

class Car{

  String color;                                       //속성(필드)

  Car(String color){    this.color="red";  }     //생성자

  String getColor(){    return color;  }         //메소드(기능)

}

//자식클래스 Truck

class Truck extends Car {

  int speed;                                           //속성(필드)

  Truck(int speed){    this.speed=speed;  }    //생성자

  void show(){    System.out.println(getColor()+" "+speed);  }//메소드(기능)

   //Car클래스를 상속 받았기 때문에 Car 클래스의 메소드인 getColor()를 사용할 수 있다.

}

//현제 파일코드를 작성하는 파일과 이름이 같은 클래스

public class Test {

   public static void main(String[] age){

     Truck t = new Truck(180);

     t.show();                                          //결과: red 180

    System.out.println(t.getColor());             //결과: red

   }

}

현제 Truck 클래스의 필드와 메소드는 몇 개 일까?

정답은 아래와 같다.

필드:    color, speed (총 2개)

메소드: getColor(), show() (총 2개)