멤버 필드는 private를 사용하고, 메서드는 public을 사용하여 멤버 필드를 보호하는 것을 은닉화라한다.
134. 객체지향 프로그래밍의 특징2-다형성
- instanceof 키워드는 힙 영역에 올라간 객체 타입을 확인한다.
- 부모의 타입으로 자식의 객체를 생성하는 레퍼런스 다형성이다.
- 부모의 이름으로 자식을 생성하거나 받은 다음, 부모 쪽에 있는 메서드를 호출하면 오버라이딩된 자식의 메서드가 호출된다. 이를 메서드의 다형성이라고 한다.
135. 은닉화 -> SKIP
136. this 이해하기
- 멤버를 나타내는 this이다. 멤버 메서드는 'this.메서드'형식으로, 멤버 필드는 'this.멤버 필드' 형식으로 사용하며 , 멤버 필드의 this.은 아규먼트와 구별하기 위한 것이다.
- this()는 this 생성자이다.
137. super 이해하기
부모의 멤버 필드를 초기화하려면 super 생성자를 사용한다. |
138. 패키지 이해하기
package와 접근 제한자 |
139. 접근 제한자 이용하기
private,- ==> class 내부
(default) ==> class 내부 + 같은 패키지
protect, # ==> 상속관계 -> public, 비상속관계 -> (default)
public,+ ==> 모든 곳
140. 자바 압축 파일 만들기와 사용하기 --> SKIP
140. 자바 압축 파일 만들기와 사용하기 --> SKIP
141. javap 이용하기 --> SKIP
142. 메모리와 객체지향 프로그래밍
객체를 생성할 때 클래스는 스태틱 영역, 레퍼런스는 스택영역, 인스턴스는 힙영역에 올라간다. 상속관계가 성립된 자식의 객체를 생성하면 부모의 객체도 힙 영역에 같이 생성된다.('자식을 생성할 때 부모도 함께 생성된다') 그리고 레퍼런스는 부모의 주소를 갖게된다. ('부모를 레퍼런스한다')
Casting을 통해 부모가 자식의 메서드를 쓰거나 자식이 부모의 메서드를 사용할 수 있다.
143. 다형성 자세히 이해하기 1
144. 다형성 자세히 이해하기 2
145. 다형성 자세히 이해하기 3
146. 다형성 자세히 이해하기 4
147. 추상 클래스
추상 클래스는 자기 이름으로 자신의 객체를 생성할 수 없으며, 추상 클래스를 상속한 자식 클래스의 객체를 생성하여 사용한다. 추상 메서드는 반드시 자식 클래스에서 오버라이딩하여 구현해야 한다. 그렇지 않으면 자식도 추상 클래스가 된다. 추상 클래스는 반드시 자식을 가져야하며 다음의 세가지 경우에 추상클래스가 된다.
1. 추상 메서드가 1개 이상일 때
2. 추상 클래스를 상속했지만 추상 메서드를 오버라이딩하지 않거나, 인터페이스를 구현했지만 메서드를 구현하지 않았을 때,
3. 추상 메서드가 없는데 강제로 상속하여 사용하려는 경우
추상 메서드를 호출하면 자식의 메서드가 호출된다.
객체를 생성하지 않고 메서드를 호출하려면 static 메서드로 선언한다.
148. 인터페이스
인터페이스는 자기 이름으로 인터페이스를 구현한 클래스의 객체를 생성할 수 있다. 인터페이스의 추상 메서드는 반드시 인터페이스를 구현하는 클래스에서 구현되어야 한다. 인터페이스만 구현하고 추상 메서드를 구현하지 않은 클래스는 추상 클래스가 된다.
인터페이스는 선언과 구현을 분리시키며, 추상 메서드를 반드시 구현해야 하는 강제성이 있어 인터페이스를 만든 의도대로 클래스를 구현할 수 있다.
인터페이스의 추상 메서드는 구현된 것이 아니므로 다른 클래스에 대한 의존성을 떨어뜨린다.
자바는 단일 상속만 할 수 있어나 인터페이스를 이용하여 다중 상속을 흉내낸다.
1.변수는 자동으로 상수가 된다( int -> public final static int )
2.private은 사용하지 말고 기본 접근 제한자 이상을 사용하자.
(void show() -> public abstract void show())
3. void show();와 같이 바디를 붙이지 않는다.
4. 인터페이스의 추상 메서드를 구현하지 못하면 자식 클래스는 추상 클래스가 된다.
5. 인터페이스가 여러 개일 때,를 이용한다 ( Bird implements sparrow, pigeon )
6. 상속이 우선이다. ( Animal extends Lion implements tiger )
인터페이스의 추상 메서드를 선언할 경우 final,static,synchronized,native,transient,volatile 제한자와 접근 제한자인 private,protected는 사용할 수 없다.
149. 추상 클래스와 인터페이스 비교하기 -> SKIP
150. 클론을 이용한 참조 타입의 복사본 만들기
a와 b 변수가 있을 때 a값을 b에 복사를 했다.
얕은 복사로 하면 a값을 바꾸면 b값이 바뀌고
깊은 복사로 하면 a값을 바꿔도 b값이 바뀌지않음.
151. 자바 컬렉션 프레임 워크 이해하기
164. 사용자가 정의한 예외 사용하기
Exception 클래스를 상속하여 사용자가 예외를 정의할 수 있다.
165. 예외처리를 이용하여 중복되지 않는 숫자 입력받기
143. 다형성 자세히 이해하기 1
144. 다형성 자세히 이해하기 2
145. 다형성 자세히 이해하기 3
146. 다형성 자세히 이해하기 4
147. 추상 클래스
추상 클래스는 자기 이름으로 자신의 객체를 생성할 수 없으며, 추상 클래스를 상속한 자식 클래스의 객체를 생성하여 사용한다. 추상 메서드는 반드시 자식 클래스에서 오버라이딩하여 구현해야 한다. 그렇지 않으면 자식도 추상 클래스가 된다. 추상 클래스는 반드시 자식을 가져야하며 다음의 세가지 경우에 추상클래스가 된다.
1. 추상 메서드가 1개 이상일 때
2. 추상 클래스를 상속했지만 추상 메서드를 오버라이딩하지 않거나, 인터페이스를 구현했지만 메서드를 구현하지 않았을 때,
3. 추상 메서드가 없는데 강제로 상속하여 사용하려는 경우
추상 메서드를 호출하면 자식의 메서드가 호출된다.
객체를 생성하지 않고 메서드를 호출하려면 static 메서드로 선언한다.
148. 인터페이스
인터페이스는 자기 이름으로 인터페이스를 구현한 클래스의 객체를 생성할 수 있다. 인터페이스의 추상 메서드는 반드시 인터페이스를 구현하는 클래스에서 구현되어야 한다. 인터페이스만 구현하고 추상 메서드를 구현하지 않은 클래스는 추상 클래스가 된다.
인터페이스는 선언과 구현을 분리시키며, 추상 메서드를 반드시 구현해야 하는 강제성이 있어 인터페이스를 만든 의도대로 클래스를 구현할 수 있다.
인터페이스의 추상 메서드는 구현된 것이 아니므로 다른 클래스에 대한 의존성을 떨어뜨린다.
자바는 단일 상속만 할 수 있어나 인터페이스를 이용하여 다중 상속을 흉내낸다.
1.변수는 자동으로 상수가 된다( int -> public final static int )
2.private은 사용하지 말고 기본 접근 제한자 이상을 사용하자.
(void show() -> public abstract void show())
3. void show();와 같이 바디를 붙이지 않는다.
4. 인터페이스의 추상 메서드를 구현하지 못하면 자식 클래스는 추상 클래스가 된다.
5. 인터페이스가 여러 개일 때,를 이용한다 ( Bird implements sparrow, pigeon )
6. 상속이 우선이다. ( Animal extends Lion implements tiger )
인터페이스의 추상 메서드를 선언할 경우 final,static,synchronized,native,transient,volatile 제한자와 접근 제한자인 private,protected는 사용할 수 없다.
149. 추상 클래스와 인터페이스 비교하기 -> SKIP
150. 클론을 이용한 참조 타입의 복사본 만들기
a와 b 변수가 있을 때 a값을 b에 복사를 했다.
얕은 복사로 하면 a값을 바꾸면 b값이 바뀌고
깊은 복사로 하면 a값을 바꿔도 b값이 바뀌지않음.
151. 자바 컬렉션 프레임 워크 이해하기
Set 계열은 인터페이스이다, add 메서드를 이용하여 새로운 객체를 추가한다.
List 계열은 인터페이스 List를 이용하여 ArrayList 객체를 생성한다.
List계열도 add메서드를 이용한다. Vector도 List계열이다.
Map계열의 인터페이스 Map을 이용하여 HasMap 객체를 생성한다.
Map계열은 put메서드를 이용한다.
152. 자바 컬렉션 프레임워크 - Set계열
153. 자바 컬렉션 프레임워크 - List계열
154. 자바 컬렉션 프레임워크 - Map계열
155. 자바 컬렉션 프레임워크 - Legacy (Vector, Hashtable)
156. 인터페이스 Comparator를 이용한 순서 정렬하기(Array.sort)
싱글톤 디자인 패턴: 자신을 static 필드에 private으로 선언한다. 객체를 생성하는데 static 키워드를 이용하여 객체 하나만 생성한다. 그리고 private을 써서 외부에서 볼 수 없게 한다.
생성자의 getInstance 메서드를 사용하여 이미 생성되어 있는 객체의 레퍼런스를 얻는다.
157. 학생 성적 비교하기(Comparable 인터페이스)
158. 학생 데이터를 성적순으로 정렬하기(Collection 클래스)
159. 박싱/언박싱, 지네릭스와 JCF 관계 이해하기
박싱은 기본 타입이 랩퍼 클래스가 되는 것이고, 언박싱은 랩퍼 클래스가 기본 타입이 되는 것이다.
Vector<Integer>와 같이 Vector,ArrayList 등 자바 컬렉션 프레임워크의 클래스를 선언할 때
<>(angle brackets, 꺽쇠 괄호)를 이용하는데 'Vector<Integer>' 전체를 파라미터화된 Vector라고 하며 '<Integer>'를 Integer타입 파라미터라고 한다.
파라미터화된 타입이란, 꺽쇠괄호 안에서 선언한 타입으로만 입출력하도록 제한한 타입으로 캐스팅은 하지 않는다. 꺽쇠 괄호 안에 들어갈 수 있는 타입에 대한 제한 사항을 통틀어 지네릭스라고 한다.
160. 지네릭스와 파라미터화된 타입 이해하기
지네릭스(Generics)는 캐스팅하지 않고도 클래스를 쓸 수 있게 해주는 기능이다.
Vector<? extends Car>에서 <>안의 ?는 Car를 상속한 자식클래스임을 의미한다.
161. 지네릭스와 파라미터화된 메서드 이해하기
162. 사용자가 정의한 파라미터화된 타입 이해하기
163. 지네릭스와 HashMap 이해하기
HashMap<String,Car>에서 <>안에 두 개의 타입 파라미터를 선언한다. 키의 타입 파라미터는 String 타입이고, 밸류의 타입 파라미터는 Car 타입이다.164. 사용자가 정의한 예외 사용하기
Exception 클래스를 상속하여 사용자가 예외를 정의할 수 있다.
165. 예외처리를 이용하여 중복되지 않는 숫자 입력받기
166. 배열을 이용한 카드놀이 만들기
167. Vector를 이용한 카드놀이 만들기
168. 간단한 카드놀이 만들기
169. 야구 게임 만들기
170. StringTokenizer를 이용한 문자열 나누기
StringTokenizer(s)는 공백문자를 기준으로 문자열은 나눈다.
StringTokenizer(s,":")는 :을 기준으로 문자열을 나눈다.
171. 로또당첨 확인하기
167. Vector를 이용한 카드놀이 만들기
168. 간단한 카드놀이 만들기
169. 야구 게임 만들기
170. StringTokenizer를 이용한 문자열 나누기
StringTokenizer(s)는 공백문자를 기준으로 문자열은 나눈다.
StringTokenizer(s,":")는 :을 기준으로 문자열을 나눈다.
171. 로또당첨 확인하기
댓글 없음:
댓글 쓰기