[Java] 자바 #21, 상속(Inheritance)

상속 

- 클래스와 클래스간에 발생

- 부모 클래스가 가지고 있는 모든 멤버(변수, 메소드)를 자식 클래스에 물려줌

- 왜?(****) - > 주로 코드 재사용

 

상속 관계에 있는 클래스

- 부모 클래스<->자식 클래스

- 슈퍼 클래스<->서브 클래스

- 기본 클래스<->확장(파생) 클래스


ex) 

1
2
3
4
5
6
7
8
//부모클래스
class Parent{
    
    public int a;
    public void aaa() {
        System.out.println("aaa");
        System.out.println(a);
    }    
}
cs


1
2
3
4
5
6
7
//자식클래스
class Child extends Parent{
    public int b;
    public void bbb() {
        System.out.println("bbb");
System.out.println(b);
    }
}
cs

Parent p1= new Parent();

p1.a=10;

p1.aaa();

Child c1= new Child();

c1.a=20;

c1.aaa();

c1.b=100;

c1.bbb();


실행해보면 생성된 Child 객체는 클래스에 작성된 extends 키워드에 따라 Parents 객체의 모든 것을 상속받습니다. 그래서 Child 객체는 int형 변수 a와 b void 메소드 aaa, bbb를 가진 객체가 됩니다. 물론 부모 클래스에 저장된 aaa와 a객체와는 전혀 상관이 없는 Child 객체만의 것입니다. 


예를 들어, 어떠한 여라가지 변수의 값이나 메소드를 가진 클래스가 정의되어있다고 할 때 , 이 클래스의 멤버들이 모든 클래스에서 필요로 하는 공통적인 요소라고 한다면, 객체를 생성해서 객체변수로 해당 데이터에 접근하거나 메소드를 호출하는 방법이 있습니다. 하지만 이는 여러 객체가 만들어질 경우 관리하기가 매우 어렵고, 해당 클래스에 소속된 것이닌 객체변수로 선언된 클래스타입의 멤버이기때문에 다소 부적합한 방법이라고 생각합니다. 

 하지만 상속개념을 이용할 경우 요구되는 기능을 가진 클래스를 상속하여 자신의 것으로 만들기 때문에(기본 기능은 부모와 똑같지만 오버라이딩 파트를 보시면 다르게 정의할 수 있습니다.) 관리하기도 유용하고 클래스내에서 직접 접근이 가능하므로 사용에도 편리한 기능이라고 생각합니다.


상속이라는 키워드는 자바의 중요한 특징일 뿐만아니라 후에 추상클래스, 인터페이스, 오버라이딩 등 많은 영역에서 상속의 개념을 응용한 파트가 많습니다. 따라서 상속이라는 개념에 대해서는 일단 


- 자식클래스는 부모클래스의 멤버를 전부 가질 수 있다.(코드의 재사용)

- 자식클래스에 extends라는 키워드를 붙이고 부모클래스를 명시하여 관계를 나타낸다.


이 두가지만 알고 계시면 될 것 같습니다. 



























댓글

Designed by JB FACTORY