Java2009. 1. 12. 21:37
1. UpCasting: 자동 ex) A a = new B(); A: 부모, B: 자식
2. DownCasting: 직접정의

- 클래스 형변환은 부모자식 관계만 가능

- 장점: 배열의 단점은 동일한 데이터 타입만 가능하다.
          부모자식 간에는 부모 객체의 배열에 자식 객체를 얼마든지 넣을수 있다.
Posted by 위푸
Java2009. 1. 12. 21:33
- 상속: 재사용이 제일 중요.

- 객체를 비교할때는 "==" 을 사용하면 안된다. 왜냐하면 레퍼런스 형이기 때문에
  주소값을 비교하기 때문에 엉뚱한 결과가 나오기 때문이다. equals()를 사용하여야 함.

- 클래스를 만들때 toString()과 equals()를 오버라이딩 해준다.

- 컴파일시 super()가 자동으로 추가된다.

- 모든 클래스의 상세정보는 toString으로 한다(OOP의 중요한 개념)
Posted by 위푸
Java2009. 1. 9. 02:22
- 클래스 상속: 기존에 클래스에 인스턴스 변수와, 인스턴스 메소드를 다시 선언하지 않고 재사용하는 것.

- 클래스 상속에서 생성자는 상속되지 않는다. 서브 클래스에서 따로 생성자를 구현해 주어야 한다.

- 부모 클래스에서 private으로 선언된 변수나 메소드는 상속되지 않는다.

- 부모 클래스는 캡슐화 시키지 않는다.(private선언 자재)

- 상속 3가지: 재사용, 추가, 재정의

- 클래스에 명시적으로 extends를 선언하지 않으면 자동으로 extents object로 선언된다.

- 메소드 오버라이딩: 부모클래스에서 정의된 메소드를 자식 클래스에서 재정의 한다.(다형성)

- final: 변수에 붙을경우 상수처리한다.
클래스에 붙을경우 더이상 자식 클래스를 못 만들게 한다.
메소드에 붙을경우 더이상 자식 클래스에서  재정의를 못 하게 한다.

- 출력하는 메소드에 리턴 타입에 void를 사용하면 도스에서 밖에 사용할 수 없다.

- toString을 overriding해야하는 이유: 클래스를 선언하여 출력하여 보면 선언된 클래스의 해쉬 코드와 클래스 이름이 출력되는데, toString을 오버라이딩 하면 그 클래스의 역할이나 내용을 알아보기 쉽게 할수 있다.

- 컴파일시 import java.lang.*; 가 자동으로 된다.
Posted by 위푸
Java2009. 1. 4. 22:09
- [has a]관계: 객체를 생성하여 사용한다.
ex) A클래스에서 B클래스의 메소드를 쓸경우: B use = new B(); use.print();

- [is a]관계: 상속받아서 사용한다.(extends)
Posted by 위푸
Java2009. 1. 4. 21:55
- JVM: 1. 클래스로더 2. 인터프리터 3. 가비지 콜렉터

- System.gc(): 가비지 콜렉터 실행. 사용하지 않는 메모리 영역을 지워준다.(바로 지워지지 않는다.)

- System.exit(0): 0: 특별한 문제없이 종료, -1: 오류나 문제가 있어서 종료.

- 검색 메소드를 구현할 때 상수를 이용하여 값을 받으면 가독성이 좋아진다.
ex) public static final SEARCH_NUM
Posted by 위푸
Java2009. 1. 4. 21:50
- 배열의 제약사항: 동일한 타입만 가능하다. 상수처리하는 것과 같음.

- call by value: 값이 복사된다. 복사된 값이 변경되어도 원본은 변화하지 않는다.

- call by reference: 주소가 복사된다. 복사된 주소가 가리키는 곳이 똑같아 짐으로 변경할 경우 원본도 변경된다.
Posted by 위푸
Java2009. 1. 4. 21:47
- 상수: public, final, static 상수명 = ""; -> 상수명에는 대문자_의미 로 선언하는 것이 좋다 ex)INT_MAX

- 배열은 자료형이 레퍼런스 형이다.

- package는 구분자가 \,/아니라 .이다
  package명은 소문자로 정의하는 것이 관례이다.
 
- package 컴파일: ex) javac -d . MyClass.java

- package를 실행할 경우 package상위 폴더에서 패키지 명을 다 입력해 주어야 실행된다.

- 역컴파일: javap

- 배열: 동일한 데이터 타입을 가지는 데이터형을 일괄처리를 위하여 쓴다. ex) 계란판

- 2차원 배열의 특징: 배열의 배열, 첫번째 배열은 레퍼런스 2번째 배열을 가리키는 주소값이 들어간다.
  2번째 배열에 값이 들어감.



Posted by 위푸
Java2009. 1. 4. 21:39
- 접근 제한자: public, protected, 생략(default), private
  클래스 앞에는 public, default만 가능하다. 인스턴스 변수, 인스턴스 메소드는 4가지다 가능.

- 클래스 변수: static으로 선언된 변수

- JVM의 메모리 관리 영역
static(클래스, 소스코드), stack(지역변수), heap(인스턴스) 3개 영역으로 관리

- static: 정적, 공유를 하기위한 기타 제한자
  static으로 선언된 클래스의 변수나 메소드는 클래스 이름으로 접근하면 좋다.

- 객체지향의 4가지 특징: 추상화, 캡슐화, 상속성, 다형성

- 다형성: 동일한 메소드지만 입력에 따라 나오는 형태가 다르다.
이것을 지원하는 것중 하나가 메소드 오버로딩, 오버라이딩)

- 상수(final): 바뀌지 않는값의 선언 
Posted by 위푸
Java2009. 1. 4. 21:29
- 클래스 구성 요소: 인스턴스 변수, 인스턴스 메소드, 생성자 ...

- 생성자
  객체 생성시에 개발자가 인스턴스 변수를 초기화하는 목적(메소드)
  오직 생성할 때 한번만 호출할 수 있다.
  생성자 이름은 클래스 명칭과 동일
  생성자를 정의하지 않을경우 컴파일러가 자동으로 생성자를 만든다(디폴트 생성자)
  생성자 오버로딩: 생성자를 여러개 선언할 수 있다.

- 생성자 오버로딩의 제약사항: 매개변수의 개수가 다르거나, 또는 데이터 타입이 달라야 중복
  정의할 수 있다. 


- this: 자기자신의 속성을 참조하기 위해서 쓰인다(레퍼런스)
  this(): 자기자신의 생성자 호출(x.x() 형식의 호출이 안되므로)

- 도큐먼트 볼때: 메소드의 리턴타입 -> 매개변수 -> 메소드 이름
Posted by 위푸
Java2009. 1. 4. 21:19
- 객체를 사용하는 가장 큰이유: 재사용 (객체에서 더 커진의미: 컴포넌트)

- 객체(클래스)가 메모리에 올라가면 소프트웨어 객체(인스턴트)가 된다.
  메모리에 할당하는건 JVM(자바 버추얼 머신)

- 클래스
  개발자가 바라보는쪽: 하나의 데이터 타입(유형)
  JVM에 바라보는쪽: 설계도(청사진)

- 객체지향 프로그래밍 절차
1. 객체 모델링(정보 추출)
2. 클래스 설계(추상화)
3. 인스턴스 생성/사용(실제 프로그래밍에 사용)

- 클래스에 사용하는 변수: 인스턴스 변수
  클래스에 사용하는 메소드: 인스턴스 메소드
  메인 메소드를 포함하는 클래스: 어플리케이션 클래스
  일반적인 클래스: 데이터 클래스
  인스턴스 변수는 클래스 내부의 모든 인스턴스 메소드에서 사용 가능하다.
  생성될때 인스턴스 변수는 자동 초기화 된다.


Posted by 위푸