1. 클래스


 정의

클래스란 사물을 객체화시키는 프로그램 작성 방법이다. 

객체(Object) 프로그램의 대상이   있는 현실세상에 있는 모든 것을 말한다.

 


사물 ---------- 객체화 ---------- > 클래스


 

현실 세계의 객체(Object / ex)자동차...) 속성(statement) 동작(behavior) 추려내어 소프트웨어 객체의 필드(field) 메소드(method) 정의하여 코드로 표현한 것이라고 할 수 있다.

클래스는 사용자 정의 자료형이기 때문에, 원하는 자료형을  마음대로 구성할  있다.

 

 선언 형식

클래스를 구성하는 멤버로는 필드(Field) 생성자(Constructor),메소드(Method) 있다.

 

public class ClassName {

 

//필드 field : 객체의 데이터가 저장되는 

//클래스의 객체(instance) 상태(state) 저장할  사용한다.

int fieldName;

 

//생성자 constructor : 객체 생성  초기화 역할 담당

ClassName (매개변수) {

//객체의 초기화 코드

}

 

//메소드 method : 객체의 동작에 해당하는 실행 블록

//클래스의 기능(behavior) 구현할  사용한다.

publicvoid methodName () {

}

 }

 

 특징

  • 클래스 이름은 식별자 작성 규칙을 따라야하며,  글자를 대문자로 작성한다.

  • 물리적 파일명(.java) 같은 이름을 가진클래스가 존재해야 하고,  클래스 선언에만 public 접근지정자가 붙어야 한다.

  • 클래스의 범위는 { } (중괄호) 정해진다.

  • 클래스는 필드(field 멤버변수라고도 한다) 메소드(method / 생성자, 일반, getter, setter) 구성되며, 내부에 멤버를 자유롭게 구성할  있다.

    • 필드는 클래스의 객체 상태를 저장할  사용한다.

    • 메소드는 클래스의 기능을 구현할  사용한다. 객체 간의 데이터 전달의 수단으로 사용된다. 메소드는 외부로부터 매개값을 받을 수도 있고, 실행  어떤 값을 리턴(결과  반환) 수도 있다. 메소드를 호출함으로써 클래스  필드() 조작할  있다.

    • 생성자는 클래스를 초기화하기 위해 사용한다. 특별히 생성자를 적지 않아도 자동으로 기본 생성자를 호출한다.

  • 클래스에 접근지정자(접근제어자->p256참고) 주로 public  사용하거나, 생략한다.파일 이름과 동일한 이름의 클래스에만 public 접근 제한자를 붙일  있다. public 사용하는 경우는 독립적인 물리적 저장이 가능한 상태이고, 외부에서 해당 클래스를 접근할  있다는 의미이다. 생략하는 경우는 독립적인 물리적 저장은 가능하지만, 외부( 패키지)에서 접근이 제한된다.

 

  • 선언된 클래스는 메모리 적재가 되어야 활동이 가능하다.

-> new 연산자로 클래스에 대한 객체(instance) 생성이 가능

  • 멤버 구성이 전혀 없어도 기본 제공되는 멤버가 있다. (Object 클래스 상속에 의한 공유 멤버 제공 /p457 Object클래스, p288 상속개념 참고)

 

  • 클래스는 서로독립적인 상태이므로 필요시 다른 클래스의 객체를 생성해서 사용할 수 있다.(동일한 클래스를 이용해서 여러개의 객체 생성 가능  blueprint(설계도) 특성)

  • 클래스의 객체가생성된 후에는 해당 클래스의 접근 가능한 멤버를 사용할 수 있다.

 

-실행 클래스 : main() 메소드가 포함된 클래스

-라이브러리 클래스 : main() 메소드가 포함되지 않은 클래스. 단독 실행이 불가능하다.

 

-JAVA에서 기본 제공하는 클래스의 물리적 모음(라이브러리) API(Application Program Interface)라고한다.

 

-다른 패키지 내에 있는 클래스의 멤버 접근 방법

1)**import 구문 사용 (단축키 : ctrl+shift+O)

2)패키지명.클래스명 형태로 작성 (: com.test.Sample)

 

-접근제한자

-public키워드가 없는 클래스 : 같은 패키지 내라면 접근이 가능!

-public 키워드가 있는 클래스 : 다른 패키지에서도 접근 가능

 

 

2. 필드

필드(field) 클래스의 구성멤버  하나로, 객체(instance) 상태 정보가 저장되는 곳이다.

객체 모델링에서 객체(Object) state field 표현한다.

 

형식

-[접근제한자] 자료형 변수명;

-[접근제한자] 자료형 변수명 = 초기값;

-접근 제한자는 private 권장

-필드는 Global 변수로써, 메소드 블록 내부에서 선언된 Local 변수와 구분된다.

 

예시) 자동차 객체의 필드

고유데이터) 제작회사, 모델, 색깔, 최고 속도

상태) 현재 속도, 엔진 회전수

 

//자동차 클래스

public classCar {

 

//<필드(field)>  -Global Variables

//->자동차의 state 분석 -> 모델명, 회사, 색상, ...

//Car 객체(instance)의상태가 고정된 상태

//->private 접근 제한자 생략된 상태 (p189 캡슐화 참고)-> 외부 직접 접근 가능

String model = "그랜저";

String company = "현대자동차";

String color = "검정";


public void method() {

//<Local Variables 로컬 변수>

//->메소드(블럭) 내부에서 선언된 변수

//->메소드 실행이 끝나면 활동 불가

//->메소드(블럭) 영역을 벗어나면 활동 불가

//->주의!) 글로벌 변수와 로컬 변수가 동일한 식별자인 경우 로컬 변수를 우선한다.(영역이 작은 쪽을 우선)

//->   변수명이 다르면 해결. 같을 경우 글로벌 변수에 this 키워드 사용.

//-> 자동 초기화 X

int a = 0; // 명시적 초기화 필요


System.out.println(this.a); //this-> 글로벌 변수

}

}

 

  • 글로벌 변수(필드) 로컬 변수의 차이점?

필드는 클래스 내부에서 선언된 변수로, 클래스 내부 영역 전체에서 사용이 가능하며 객체(instance)메모리에 활동하는 동안 사용하다. 자동초기화가 지원되고 접근 제한자도 사용할  있다.

로컬 변수(Local Variable) 메소드(블록) 내부에서 선언된 변수로, 메소드 실행이 끝나거나 메소드 블록영역을 벗어나면 활동이 불가한 변수이다.

! 주의 ) 글로벌 변수와 로컬 변수가 동일한 식별자인 경우 로컬 변수를 우선한다. (변수명을 다르게 설정해주자) 같을 경우 글로벌 변수에 this 키워드를 사용한다.

자동초기화가 지원되지 않아 명시적 초기화가 필요하다.

 

필드 초기화 방법 네가지 (->p206 추가 참고 : p265. Getter/Setter 메소드)

자동 초기화

String color; //자동초기화  : null

int age;  //자동초기화  : 0

명시적 초기화

String company = "현대자동차";

 


----추가 참고----

p31. p192. 식별자 작성 규칙

클래스의 접근 제한 (->p257 ~264p)

캡슐화 개념(p189 참고) -> 방법 : 접근 제한자 사용



// 추가 참고한 책 : <이것이 자바다> 1권

'Java > 노트' 카테고리의 다른 글

[Java] 생성자(Constructor)에 대해서  (0) 2018.07.13

+ Recent posts