본문 바로가기
Programming/Java

[JAVA]OOP란? - 상속이란?

by minux_s 2021. 5. 21.
728x90

흔히 말하는 재산 상속의 그 상속이 클래스에도 존재합니다.

 

<상속의 개념>

앞에서 만든 "학생"이라는 클래스로 "A"와 "B"라는 객체(인스턴스)를 만들었고, 이를 바로 클래스로부터 객체를 선언한다고 합니다.

 

그럼 여기서 클래스끼리의 공통점을 묶는다면??

앞에서의 "학생"이라는 클래스와 "교사'라는 클래스를 생각해보면 둘 다 "사람"이라는 공통점이 있습니다.

즉, "사람"이라는 클래스를 통해서 "학생","교사"라는 클래스를 정의할 수 있습니다.

 

정리하자면

상속이란: 클래스를 통해서 클래스를 정의
객체 선언이란: 클래스를 통해서 객체를 생성

 

이라는 차이가 있습니다.

<상속의 방법>

그럼 이제 상속에 대한 코드를 살펴보면 

public class Example{
	public static void main(String[] args){
    	Student a = new Student(17,"A");
        Teacher b = new Teacher("B");
        Student c = new Student(18,"C");
        
        System.out.println(a.getName() + "의 번호" + a.getNumber());
        System.out.println(b.getName() + "의 번호" + b.getNumber());
        System.out.println(c.getName() + "의 번호" + c.getNumber());
    }
}

class Student extends Human{
	private int m_number;
    
    public Student(int _num, String _str){
    	super(_str);
        m_number = _num;
    }
    public int getNumber(){
    	return m_number;
	}
}

class Teacher extends Human{
	public Teacher(String _str){
    	super(_str);
    }
    public String getNumber(){
    	return "교사";
    }
}

class Human{

	private String name;
    
    public Human(String _str){
    	name = _str;
    }
    public String getName(){
		return name;
	}
}

예시처럼 class 선언 옆에 "extends"라는 자바 키워드를 통해서 상속을 줄 수 있습니다.

 

상속의 장점으로는 상위클래스의 속성을 그대로 가져왔기 때문에 하위클래스는 그 속성을 그대로 사용할 수 있습니다.

위의 출력 부분 코드를 보시면 getName의 경우 Student, Teacher 클래스에 선언되어 있지 않지만, 상속받은 Human의 클래스 안에 있기 때문에 사용이 가능합니다.

728x90

댓글