개발의 시작과 끝

2020.04.28 / Day - 17 자바 상속, 구성 복습 본문

풀스택/자바 공부, 복습

2020.04.28 / Day - 17 자바 상속, 구성 복습

개발지혜 2020. 4. 28. 09:41

17일차

  • 15 : 00 ~ 17 : 30 : codeup 2문제 이상
  • 17 : 30 ~ 18 : 50 : 객체 공부

 

 

상속(Inheritance)

상속은 상위클래스에 있는 메서드를 하위 클래스에게 물려주는 것이다.

상위클래스 메서드는 extends를 통해 하위클래스가 상속받을 수 있다.

상속에서 다중상속은 불가하며, 상속을 받을 때는 상식적으로 가능한 것이 좋다.

이를 어기게 되면 나중에 꼬일 수가 있다.

상속에서 상위 클래스 메서드를 물려받은 하위클래스가 메서드를 재정의 할 수가 있는데

이를 메서드 오버라이딩이라고 한다.

class Main {
  public static void main (String[] args) {
  	오리 a오리 = new 오리();
 	흰오리 a흰오리= new 흰오리();
    
    a오리.날다();
    a흰오리.날다();

  }
}

class 오리 {
	void 날다() {
    	System.out.prinln("오리가 날다");
    }
}

class 흰오리 extends 오리 {  // 오리 상속
	void 날다() {
    	System.out.prinln("오리가 하늘로 날다"); // 메서드 오버라이딩
    }
}

출력
a오리 = 오리가 날다
a흰오리 = 오리가 하늘로 날다

 

 

구성(composition)

구성은 상속과 달리 말 그대로 클래스안에서 새로운 클래스를 구성하는 것이다.

구성패턴 또는 구성방식으로 상속같이 하위 클래스가 상위클래스에 있는 메서드를 물려받지 않는다.

class Main {
  public static void main (String[] args) {
  	사람 a사람 = new 사람();
    a사람.a왼팔 = new 팔();
  }
}

class 사람 {
	int 나이;
    팔 a왼팔;
    다리 a다리;
}

class 팔 {

}

class 다리 {

}

상속 보다는 구성을 쓰는것이 좋다. 쉽게 말해

상속은 is a관계로 a is b =  a는 b다. 이고,

구성은 has a관계로 a has b = a는 b를 가지고 있다. 라고 볼 수있다.

상속에서 상위 클래스가 바뀌게 되면 하위 클래스에게도 영향이 갈 수있기 때문에

구성을 쓰는 것이 좋다.