자바의 상속에 대해서 알아보자.
상속
상속이란 기존의 클래스를 재사용하여 새로운 클래스를 작성하는 것이다. 상속을 통해서 클래스를 작성하면 보다 적은 양의 코드로 새로운 클래스를 작성할 수 있고 코드를 공통적으로 관리할 수 있기 때문에 코드의 추가 및 변경이 매우 용이하다.(재사용성을 높이고 코드의 중복을 제거하여 프로그램의 생산성과 유지보수에 크게 기여함.)
자바에서 상속을 구현하는 방법은 새로 작성하고자 하는 클래스의 이름 뒤에 상속받고자 하는 클래스의 이름을 키워드 'extends'와 함께 써주면 된다. 여기서 상속해주는 클래스를 '부모(조상) 클래스'라 하고 상속 받는 클래스를 '자식(자손) 클래스'라 한다.
클래스는 타원으로 표현하고 클래스간의 상속관계는 화살표로 표시했다. 자손 클래스는 조상 클래스의 모든 멤버를 상속받기 때문에, Child클래스는 Parent 클래스의 멤버들을 포함한다고 할 수 있다.
상속의 특징으로는,
- 자손 클래스는 조상 클래스의 모든 멤버를 상속받는다. (단, 생성자와 초기화 블럭은 상속되지 않는다.)
- 조상 클래스가 변경되면 자손 클래스는 자동적으로 영향을 받지만, 자손클래스가 변경되는 것은 조상 클래스에 아무런 영향을 주지 못한다.
- 자손 클래스의 멤버 개수는 조상 클래스보다 항상 같거나 많다.
- 클래스 상속은 하나의 부모로부터 단일 상속만 가능하다.
- 자바 클래스의 최상위 조상 클래스는 Object이다. 다른 클래스로부터 명시적인 상속을 받지 않으면 자동적으로 Object 클래스로부터 상속을 받는다.
단일상속
자바에서는 하나의 부모 클래스로부터의 단일상속만 가능하다. 그래서 둘 이상의 클래스로부터 상속을 받을 수 없다. 클래스간 다중상속을 허용하면 클래스간의 관계가 매우 복잡해지며 서로 다른 클래스로부터 상속받은 멤버간의 이름이 같은 경우 구별할 수 있는 방법이 없다는 단점이 있다. 클래스 간의 관계가 보다 명확해지고 코드를 더욱 신뢰할 수 있게 만들어 준다는 점에서 다중상속보다 유리하다.
최상위 조상 클래스 Object
Object클래스는 모든 클래스 상속계층도의 최상위에 있는 조상클래스이다. 다른 클래스로부터 상속 받지 않는 모든 클래스들은 자동적으로 Object클래스로부터 상속받는다. (이미 어떤 클래스로부터 상속받도록 작성된 클래스에 대해서는 컴파일러가 Object클래스를 상속받게 하지 않는다.)
자바의 모든 클래스들은 Object클래스의 멤버들을 상속 받기 때문에 Object클래스에 정의된 멤버들을 사용할 수 있다. 주요 메소드로는 toString()과 equals(Object o)등이 있다.
ex)
'언어공부 > Java' 카테고리의 다른 글
자바 super 레퍼런스, super. 와 super() (0) | 2021.05.12 |
---|---|
자바 메소드 오버라이딩(Overriding), 오버라이딩과 오버로딩 차이 (0) | 2021.05.11 |
자바 static 변수 (정적 변수), static 메소드 (정적 메소드) (0) | 2021.05.09 |
자바 this 레퍼런스, this. 와 this() (0) | 2021.05.09 |
자바 생성자(Constructor), 생성자 오버로딩(Constructor Overloading), 초기화 블록 (0) | 2021.05.08 |