본문 바로가기
STUDY/JAVA

상속이란?

by NOTEEE 2018. 1. 22.

상속이란?

  • 객체지향의 재활용성을 극대화시킨 프로그래밍 기법.
  • 한마디로 물려준다라는 의미.
  • 어떤 객체가 있을 때 그 객체의 필드와 메소드를 다른 객체가 물려 받을 수 있는 기능.
// 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(1020);
        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(1020);
        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(1020);
        bClass.mul();
        bClass.sum();
        bClass.avg();
 
    }
 
}
cs


'STUDY > JAVA' 카테고리의 다른 글

오버라이딩  (0) 2018.01.22
오버로딩  (0) 2018.01.22
final의 의미  (0) 2018.01.22
클래스 메소드  (0) 2018.01.22
클래스 멤버  (0) 2018.01.22