본문 바로가기

학원/Java

JAVA 5장. 클래스와 메소드

[ 목차 ]

1. 클래스 - 객체 모델링

2. 클래스의 설계

3. 객체 생성

4. 객체의 변수와 메소드 사용

5. 같은 클래스를 사용해서 여러 객체를 생성

6. 변수의 종류

7. 메소드

8. 가변 인자 메소드

9. 메소드 오버로딩

10. static 메소드와 인스턴스 메소드

11. 생성자

12. this() 생성자

13. 초기화 블럭

14. 응용예제1 - 이름으로 회원을 검색하는 예제

 

1. 클래스 - 객체 모델링

1) 클래스 : 자바에서 생성되는 프로그램의 최소 단위

2) 객체 모델링 : 객체의 속성과 기능을 도출하는 단계

  1] 속성(특성) : 객체를 특징 지을 수 있는 성질

  2] 기능 : 객체가 할 수 있는 행위

 

2. 클레스 설계

1) 특정 객체를 정의하는 것

2) 설계도면 작성과 같은 개념(=빵 틀)

3) 사용자 정의 타입

4) 메모리에 객체를 생성해 사용 가능

class 클래스 이름{
     변수 정의;       // 속성

     메소드 정의    // 기능  = 함수 or Function과 같은 말이지만 객체지향에는 메소드라 지칭
}

3. 객체 생성

 1) 객체 생성시 new 연산자 사용

@@ ** = new @@ ( );

@@ : 클래스, ** : 객체 이름

 

4. 객체의 변수와 메소드 사용

 

5. 같은 클래스를 사용해서 여러 객체를 생성

1) 객체는  각각 독립적으로 생성되며, 고유의 주소를 지님

2) 같은 주소를 참조하면 같은 객체를 가르킴

 

6. 변수의 종류

1) 인스턴스 변수 : 멤버 변수

  1] 클래스 영역에 정의된 변수

  2] 객체가 생성 될 때 자동 초기화

  3] 힙 영역에 생성

 

2) 스태틱 멤버 변수

  1] 클래스가 로드될 때 클래스 영역의 Static 영역에 생성

  2] 객체 생성 없이 클래스 이름으로 바로 참조 가능

  3] 메인보다 먼저 생성

 

3) 로컬 변수

  1] 메소드나 초기화 블럭 안에 정의된 변수

  2] 스택에 생성되면 메소드 실행, 종료시 자동 소멸

  3] 자동 초기화 되지 않음

 

7. 메소드

1) 클래스가 수행할 수 있는 기능을 정의

2) 구조

리턴타입 메소드이름(파라미터1, 파라미터2. . .) {
         구현 내용;   
}
int add(int x, int y) {
      return x + y;
}
int result = add(10, 10); // 20

 

8. 가변 인자 메소드

void printInfo(String ...infos) {
     System.out.println(infos[0]);
}

 

9. 메소드 오버로딩

1) 같은 이름의 메소드를 한 클래스에 여러 개 정의 할 수 있는 기능

2) 파라미터 타입이나 개수가 달라야 함

 

10. static 메소드와 인스턴스 메소드

1) static 메소드는 정의 부분 앞에 static 예약어가 지정된 메소드

2) static 메소드는 객체 생성 없이 클래스이름.메소드이름() 으로 호출 가능

3) static 메소드는 인스턴스 메소드나 변수를 바로 호출 할 수 없음

 

11. 생성자

1) new 연산자에 의해서 객체 생성시 호출 되는 메소드

2) 멤버 변수 초기화에 사용

3) 정의 하지 않으면 클래스 이름과 같은 기본 생성자 호출

4) 메소드 오버로딩을 통해 생성자 여러개 정의

5) Source - Generate Constructor using Fields를 통해 파라미터 추가 가능

6) 오버로딩 된 생성자가 있으면 기본 생성자는 호출되지 않음

 

12. this() 생성자

1) 자기 자신 클래스의 생성자를 호출하기 위해 사용되는 생성자

2) 변수 초기화 코드를 간결하게 처리

 

13. 초기화 블럭

1) 클래스 안에서 복잡한 초기화를 실행하는 영역

2) 초기화 순서 : 암시적 초기화 - 명시적  초기화 - 생성자에 의한 초기화

[인스턴스 초기화 블럭]

{
  // 생성사 호출 시 마다 실행
}
[static 초기화 블럭]

static {
  // 클래스 로딩 시 한 번 실행
}

 

14. 응용예제 - 이름으로 회원을 검색하는 예제

1) private를 사용할 경우 클래스 외부에서 접근할 때 getter와 setter를 사용하여 접근해야 함

2) Source - Generate Getter and Setters 를 이용해 만들 수 있음

private int **;

public void set**(int **) {
   this.** = **;
}

public int get**() {
   return this.**;

}