2020-08-10 클래스의 관계

1. HasA ( ~ 가 ~를 가지고 있다.) //포함관계

 ■ 특정객체 내에서 다른 객체를 갖고 와서 사용하는 클래스 (Data Management Class)
 ■ 큰 클래스가 작은 클래스를 갖다 쓰는 느낌.( 사람이 펜을 가져다 쓴다 O 펜이 사람을 가져다 쓴다X)
 ■ 다이렉트로 접근이 안되기 때문에 메소드를 통해 접근을 해야한다.

 1. Data Management Class(큰거)
     - Data Class를 필요에 의해서 가져다가 사용하는 클래스

 2. Data Class(작은거)
     - 독립적으로 존재하고 어디든 필요한 곳에서 쓸 수 있게 제공되는 클래스

 

 

 

2. IsA ( ~ 는 ~다.) //상속관계

 ■ 특정 객체가 다른 객체에게 자신의 능력을 포함시켜주는 상속 관계를 의미한다. 
 ■ 자바에서는 보통 부모클래스는 Super Class, 자식 클래스는 Sub Class 라고 부른다.
 ■ 자바는 100% 상속관계이다. 클래스를 만드는 순간 상속된다.(기본 Object)
 ■ 상속을 받는 순간 부모클래스의 모든것을 사용이 가능하다.
 ■ 자식은 부모가 주는 것 그대로 사용하면되고 추가할것만 추가해주면 된다.
 ■ 두개 이상의 상속을 받는것은 다중 상속이라고 하는데 모호성이 발생할 수 있다. ( 자바 = 객체끼리의 다중상속X)
 ■ 예외적으로 Interface 라는것은 다중 상속이 가능하다.
 ■ 객체의 재사용은 코드의 간결성을 제공해주는 객체지향 언어의 장점과 중요한 특징이있다.

 

[1] 다형성(오버라이딩)을 사용하는 이유

 1. 완전히 새로 바꾸고 싶을때 
    부모가 준걸 자식이 다시 새롭게 정의를 내리는것 (껍대기는 그대로)

 2. 부모의 기능을 그대로 쓰면서 무언갈 더 추가하고 싶을때

[2] super. / super() 호출 

super.
  -부모의 객체를 접근하는 레퍼런스변수  super. = 부모를 접근하는것
  -오버라이딩 됏을때 부모랑 내꺼랑 구별하는게 super이다. 
  - this. 은 내껄 부르는거지만 super.는 명시적으로  부모껄 부른다 ( 오버라이딩 해결)
  - 상속관계 (object >class A >class B) 상태에서 B가 super.을 명시해주면 object의 것을 부르는게 아니고 A의것을 부른다.

super() (super호출)
 - 부모 생성자를 호출하는것.
 - 명시적으로 사용할 경우는 sub클래스에서 데이터를 "전송"하고 싶을때 사용한다.
 - 항상 sub클래스의 생성자 함수의 첫번째 라인에 항상 존재하고 있다.
ex) public D(int a) {
         super();    // 부모 클래스의 생성자를 호출한다. 
         this.a=a;   // 부모클래스의 생성자로 가서 명령 다 수행하면 다시 돌아와서 this.a=a; 명령 수행
}


 

IsA 기본 문법

class [sub 클래스명] extends [super클래스명] { 
             ..;
}

'언어 > 자바' 카테고리의 다른 글

2020-08-11 # List  (0) 2020.08.12
2020-08-10 ArrayList 기본개념  (0) 2020.08.10
2020-08-07 배열  (0) 2020.08.06
2020-08-05 #3 메소드와 클래스의 개념  (0) 2020.08.05
2020-08-04 (연산자, 제어문)  (0) 2020.08.04

댓글

Designed by JB FACTORY