자바 상속
[1] 상속
부모 클래스의 기능을 자식 클래스가 물려받는 것을 상속이라 합니다.
원, 삼각형, 사각형이라는 클래스가 있습니다.
이 클래스들은 각각 rotate() 라는 메소드를 가지고 있습니다.
rotate() 라는 동일한 메소드를 각각 따로 만들면 매우 비효율적입니다.
이 때 상속을 이용할 수 있습니다.
도형이라는 클래스를 만들고 거기에 rotate() 메소드를 만듭니다.
이때 rotate() 메소드를 public 또는 protected로 만들어야 합니다.
private으로 할 경우 자식 클래스에서 사용할 수 없습니다.
이렇게 구현된 rotate() 메소드는 도형 클래스를 상속한 클래스에서 사용 가능합니다.
이때 상속관계를 파악하기 위한 방법으로
'A는 B다' 또는 'A에는 B가 있다' 의 관계를 이용할 수 있습니다.
'삼각형은 도형이다'
'원은 도형이다'
이런 방법으로 상속관계를 제대로 설계 했는지 확인할 수 있습니다.
public class Shape {
private String name;
protected int number;
public void rotate() {
System.out.println("도형이 회전합니다.");
}
}
public class Circle extends Shape {
public Circle() {
name = "Circle"; // Error
number = 1;
}
}
public class Test {
public static void main(String[] args) {
Circle c = new Circle();
c.rotate();
}
}
Shape 클래스를 Circle 클래스가 상속합니다.
Shape 클래스는 private 변수인 name, protected 변수인 number
그리고 public 메소드 rotate()를 가집니다.
Circle 클래스를 보면 extends Shape 이라고 있는데
Shape 클래스를 상속한다는 의미입니다.
생성자를 보면 private 변수인 name을 사용하니 에러가 났습니다.
반면 protected인 number는 사용 가능 합니다.
마지막으로 main 메소드에서 Circle 객체인 c를 만들어 rotate() 메소드를 호출하고 있습니다.
'JAVA' 카테고리의 다른 글
[JAVA] 생성자, 부모클래스 생성자 호출 방법, super (0) | 2019.10.09 |
---|---|
[JAVA] 인터페이스(interface) (0) | 2019.10.09 |
[JAVA] ArrayList, ArrayList Size 구하기, Index 구하기 (0) | 2019.10.09 |
[JAVA] 랜덤(Random) 함수, 난수 생성 (0) | 2019.10.09 |
[JAVA] 두가지 for 반복문, for문 배열 사용 (0) | 2019.10.09 |