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
'Programming > Java' 카테고리의 다른 글
[JAVA] OOP - 클래스&인스턴스란? (0) | 2021.05.21 |
---|---|
[Spring] Error creating bean with name 'org.springframework.validation.beanvalidation.OptionalValidatorFactoryBean#0' 에러 해결 (0) | 2021.05.14 |
[MQTT] window & linux mosquitto 설치 방법 (0) | 2021.01.29 |
[MQTT] MQTT broker 종류 (0) | 2021.01.29 |
[Javascript Framework] Property (0) | 2020.12.28 |
댓글