상속이란?
- 객체지향의 재활용성을 극대화시킨 프로그래밍 기법.
- 한마디로 물려준다라는 의미.
- 어떤 객체가 있을 때 그 객체의 필드와 메소드를 다른 객체가 물려 받을 수 있는 기능.
// A클래스 생성 public class AClass { Integer i; Integer j; static int TEMP = 10; public void setOprands(int i, int j) { this.i = i; this.j = j; } public void sum(){ System.out.println(this.i + this.j); } } // B클래스가 생성되고 동시에 A클래스 상속받는다. public class BClass extends AClass{ public void mul(){ System.out.println(this.i * this.j); } } public class JAVA_TEST { public static void main(String[] args) { BClass bClass = new BClass(); bClass.setOprands(10, 20); bClass.mul(); bClass.sum(); } } | cs |
JAVA_TEST 클래스에 보면 bClass.mul(), bClass.sum()이 실행되고 있다. 분명 BClass 객체를 선언 했는데 말이다.
그 이유는 extends AClass를 상속 받았기 때문이다.
추가)
평균을 구하는 클래스를 추가하여 똑같은 방법으로 상속을 활용한 코드가 아래에 있다.
public class AClass { Integer i; Integer j; static int TEMP = 10; public void setOprands(int i, int j) { this.i = i; this.j = j; } public void sum(){ System.out.println(this.i + this.j); } } public class BClass extends AClass{ public void mul(){ System.out.println(this.i * this.j); } } public class CClass extends BClass{ public void avg(){ System.out.println(this.i + this.j / 2); } } public class JAVA_TEST { public static void main(String[] args) { CClass bClass = new CClass(); bClass.setOprands(10, 20); bClass.mul(); bClass.sum(); bClass.avg(); } } | cs |
특징
- 다중 상속이 불가능. 즉, 2개 이상의 클래스를 한꺼번에 상속할 수 없습니다.
- 부모의 생성자는 상속이 되지 않는다.
- 부모클래스가 가진 멤버 변수와 메소드를 모두 상속받는다.
- static 메소드 또는 변수도 상속이 된다.
- 동일한 이름의 변수가 부모 클래스와 자식 클래스에 둘 다 존재할 경우 부모 클래스의 변수는 가려진다.
아래 예제를 보자
public class AClass { Integer i; Integer j; static int TEMP = 10; public void setOprands(int i, int j) { this.i = i; this.j = j; } public void sum(){ System.out.println(this.i + this.j); } public void AMethod(){ System.out.println("A 클래스 호출 완료"); } } public class BClass extends AClass{ public void mul(){ System.out.println(this.i * this.j); AMethod(); } public void BMethod(){ System.out.println("B 클래스 호출 완료"); } } public class CClass extends BClass{ public void avg(){ System.out.println(this.i + this.j / 2); BMethod(); } } public class JAVA_TEST { public static void main(String[] args) { CClass bClass = new CClass(); bClass.setOprands(10, 20); bClass.mul(); bClass.sum(); bClass.avg(); } } | cs |