■ 상속
자바 상속이란?
- 기존 클래스의 변수와 메소드를 물려 받아 새로운 클래스를 구성하는 것을 의미한다
- 기존에 정의되어 있던 클래스를 부모 클래스 또는 상위 클래스라고 하며 상속을 받아 새롭게 작성된 클래스를 자식클래스 또는 하위 클래스라고 한다
특징
- 상속은 extends 를 사용하며 다중상속을 지원하지않아 하나의 클래스만 지정 할 수 있다
- 자식 클래스는 또 다른 클래스의 부모 클래스가 될 수 있다
- 자바에서 모든 클래스는 Object 클래스를 자동으로 상속받게 되어있어 equals(), toString() 같은 메서드를 바로 사용 할수 있다
- 접근제한자가 public, protected에 한하여 자식클래스에서 override하여 수정하여 사용 할 수 있다.
단점
- 캡슐화를 깨트린다, 부모 클래스가 어떻게 구현되는지에 따라 하위 클래스의 동작에 이상이 생길 수 있다
- 부모 클래스의 구현 내용을 알아야 하위 클래스에서 해결 할 수 있다
- 상속을 여러번 반복하면 계층 구조를 따라다녀야 하므로 복잡한 구조를 가지게 되어 자식 클래스가 많아지게 되는 경우 부모 클래스의 소스코드 변경이 힘들다
장점
- 기존 작성된 클래스를 재사용 할 수 있어 코드의 중복을 줄일 수 있다
- 클래스 간 계층적 분류 관리가 가능하여 유지보수가 용이하다
- 객체지향 프로그래밍에서의 다형성(어떤 객체의 속성이나 기능이 상황에 따라 여러 가지 형태를 가질 수 있는 성질)
■ 상속 extends 활용해보기
- 부모 클래스 생성하였고 private String position을 사용하기 위해 getter setter를 만들어주었다
public class Note2 {
String name;
private String position;
public Note2(String name, String position) {
this.name = name;
this.position = position;
}
public String getPosition() {
return position;
}
public void setPosition(String position) {
this.position = position;
}
}
- Note2 인 부모 클래스를 상속 받을 Note1 클래스를 만들어주었고
- 생성자를 만들어 super()를 통해 부모클래스의 필드를 사용
- 출력메소드 showInfo()에서 부모클래스의 private가 걸린 position을 쓰기 위해 get을 이용하였다
public class Note1 extends Note2 {
private String team;
public Note1(String name, String position, String team) {
super(name, position);
this.team = team;
}
public void showInfo() {
System.out.println("팀 : " + team + " / " + " 이름 : " + name + " / " + " 포지션 : " + getPosition() );
}
}
- 출력을 하기위한 메인 클래스에서 코드 작성
public static void main(String[] args) {
Note1 n1 = new Note1("손흥민", "FW", "토트넘");
Note1 n2 = new Note1("김민재", "DF", "뮌헨");
Note1 n3 = new Note1("이강인", "MF", "PSG");
n1.showInfo();
n2.showInfo();
n3.showInfo();
}
- 출력한 결과
-Today short review-
배운것을 토대로 새로 만들어 보았는데 틀린점이나 잘못 알고 있는 부분이 있다면 알려주시면 감사하겠습니다.
'JAVA' 카테고리의 다른 글
자바 static (0) | 2023.10.10 |
---|---|
자바 인터페이스(Interface) (0) | 2023.10.06 |
자바 Map (0) | 2023.09.27 |
자바 List (0) | 2023.09.23 |
자바 - 배열/객체 배열 (0) | 2023.09.20 |