Java 에서 상속이란?
자바에서 상속은 기존의 class를 재사용하여 새로운 class를 작성하는것이다.
상속을 통해 보다 적은 양의 코드로 새로운 클래스롤 작성할 수 있고 코드를 공통적으로 관리할 수 있어 코드의 추가 및 변경(재활용)이 용이하다.
참고로 상속된 클래스를 또다시 상속 (다중상속) 이 가능하나 이는 다루지 않겠다.
상속의 예시 1
class a { String name; int number; } public class Example { public static void main(String[] args){ a obj = new a(); obj.name = "이름"; obj.number = 123; System.out.println(obj.name); System.out.println(obj.number); } }
서브 클래스가 같은 패키지에 속할 경우 상속 예시 (extends)
class a { String name; int number; } public class Example extends a { public static void main(String[] args){ name = "이름"; number = 123; System.out.println(name); System.out.println(number); } }
클래스에는 접근 지정자를 지정할수 있는데 접근 지정자가 선언되어 있지 않으면 default 접근지정자라고 한다.
class a { private String name; protected int number; public int n2; int n3; } public class Example extends a { public static void main(String[] args){ name = "이름"; //Error number = 123; n2 = 123; n3 = 123; System.out.println(name); System.out.println(number); } }
슈퍼 클래스 (본클래스) 와 서브클래스가 같은 패키지에 있을경우 private 제외 참조가능하며
패키지가 다르면 default 접근 지정에도 접근이 불가하다.
이를 표로보면 다음과 같다.
접근 지정자 | ||||
클래스 |
패키지 |
자식클래스 |
전체 세계 | |
public |
O |
O |
O |
X |
protected |
O |
O |
X |
O |
없음 |
O |
X |
O |
O |
private |
X |
O |
O |
O |