2020-08-10 클래스의 관계
- 언어/자바
- 2020. 8. 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 |