본문 바로가기
java

[Java] 객체지향과 상속 #1 - 상속이란?

by jinbro 2017. 9. 24.

[상속 기본개념]
(1) 상속이란? 객체 관계를 중심으로 설명

- 객체 간의 관계를 설정하는 : 여러 관계가 있지만 서로 속하는 관계로 설정함

- 서로 속한다 : 상위와 하위(파생, 포함)관계로 설정하는 것을 말함

- : 타이어 > 한국타이어, 금호타이어


(2) 상속을 구체화한 자바 문법 : extends(class), implements(interface), Override

(3) 상속 범위

- private 제외한 접근제어자


(4) extends 사용해보자

public class Account {

/* private field */
private String account_num;
private int money;
/* public field */


public Account() {
this.account_num = "123412313123";
this.money = 0;
}

public String getAccount_num() {
return account_num;
}

public int getMoney() {
return money;
}

protected void setMoney(int money) {
this.money = money;
}
}

public class KBAccount extends Account {

/************* main *************/
public static void main(String[] args) {
KBAccount c1 = new KBAccount("박진형");
c1.setMoney(100);
System.out.println(c1.getAccount_num());
}


/************* KBAccount code *************/
private String name;

public KBAccount(String name) {
super();
this.name = name;
}

@Override
public int getMoney() {
/* 확인과 관련한 로직 수행 -> 상위 객체에 요청 -> 돈 가져왕 */

return super.getMoney();
}

@Override
protected void setMoney(int money) {
/* 확인과 관련한 로직 수행 -> 상위 객체에 요청 -> 수정 */

super.setMoney(money);
}
}


(5) super this 차이

- super : 자신의 상위 객체(타입 - 클래스) 지칭

1) super() - 생성자, 매개변수가 있을 super(매개변수)

2) super.필드/메서드


- this : 자신을 지칭


(6) 설계의 중요성

- 설계가 정말로 중요함

- 객체 간의 관계를 설정해두고 코딩을 합시다

- 무작정 Cat, Dog, Lion... 만들기 시작하면 중복 코드 어쩔......


(7) final 키워드의 의미와 final 적용된 클래스와 메서드

- final : 마지막!

- final 클래스 : 아무런 관계도 맺지않는 객체 타입을 뜻함, 상속하지않음

- final 메서드 : 오버라이딩 허용하지않겠다는

- final 클래스 예시 : 자바 표준 API - String, Integer extends 없음


(8) 다시 살펴보자 접근제어자

- public < protected < default < private

- 적용대상과 범위
1) public : 클래스에도 지정 가능하며, 모든 곳에서 접근가능함

2) protected : 클래스를 제외하고 지정 가능하며, 같은 패키지는 모두, 다른 패키지에서는 상속받는 객체타입만 접근 가능

3) default : 같은 패키지 내에서만 접근 가능

4) private : this, 자기 자신이외에 접근 불가



댓글