본문으로 바로가기


클래스란?


class Sample1
{

...

}

class라는 키워드가 붙은 블록으로 둘러싸인 부분을 클래스라고 부른다.

즉, 지금까지 사용한 코드는 하나의 클래스로 사용되었다. 

지금까지 만들어 온 클래스에서 사용할 수 있는 새 클래스를 만들어 보겠다.


클래스의 원리

ex) 자동차 = 사물이라고 가정



 자동차 데이터

●차량번호(데이터)

●남은 연료 양(데이터)


-----> 나중에 배우겠지만 변수로 선언되는 부분이다. 

"차량번호는 ○○이다." "남은 연료의 양은 ○○이다 "

○○부분을 데이터의 상태 및 특성이라고 말할수 있다.   


자동차 기능 = 메소드

▶ 차량 번호 결정하기

▶ 자동차에 연료를 넣기 

▶ 차량 번호와 남은 연료의 양을 표시



클래스는 사물의 상태 및 특성, 그에 관련된 기능을 정리하여 프로그램으로 표현한 것이다.



class 자동차

{

차량 번호

연료량

차량 번호를 결정하기

연료를 넣기

차량 번호와 남은 연료의 양을 표시하기

}



클래스 선언하기

class 클래스 명
{

형(type)명 필드(field)명;

. . .

리턴 값의 반환형(type) 메소드(method) 명(인수)

{

문장;
. . . return식(expression);

}


}



클래스의 ' 상태 및 속성' = 필드(field) , 필드는 코드 상에서 변수로 나타낸다.

클래스 '기능'을 표현하기 위한 수단을 메소드(method)라고 부릅니다. 필드와 메소드 모두 클래스의 멤버라고 부른다.



ex) 차(Car)라는 클래스 선언

class Car

{

int num;

double gas;

}



class car

{

int num;

double gas;


---> 이부분을 필드라고 부른다.



객체 생성하기

선언한 클래스를 이용하려면 객체(인스턴스를) 생성한다. 



  class Car

   번호           -- 데이터

   가솔린양     -- 데이터
   번호를 결정  -- 메소드 함수
   휘발유를 넣는다 ---메소드 함수

   번호와 가솔린 양을 표시 한다.---- 메소드 함수

 필드는 데이터와 메소드로 구성된다.




객체1                                         객체2


자동차 1번호는 1234                      자동차 2 번호는 4567

자동차 1가솔린양은 20.5                 자동차 2 가솔린 양은 30.5

...                                               ...


객체 생성 코드

1. 객체를 담을 변수 선언하기     Car(클래스 car1(변수);  Car형 변수 car1을 선언

   car1(변수) = new Car(); 객체를 생성해서 변수 car1에 대입. car1은 Car클래스의 객체를 가리킨다.

2. 객체를 만들고, 그 변수에 접근하기


객체 만드는 구문


(1)클래스명 변수명;
변수명 = new 클래스 명();

Car car1 = car1 new Car();



(2) 하나의 문장으로 선언

클래스명 변수명 = new 클래스명();

Car car1 = new Car();






멤버 접근하기


자동차 1대에 대한 차량 번호 및 연료 양의 실제 값 적용하기


생성된 객체 는 num, gas값을 저장할 수 있는 필드(변수)를 가진다. 

car1.num  --- 차량번호

car1.gas   --- 연료의 양



즉 car1.num이라고 하면 car1이 가리키는 자동차 객체 번호를 가리키게 되는 셈이다

public static void main(string [] args)

{

car1.num = 1234;   ---> 멤버에 접근하여 값을 저장

car1.gas = 20.5

}


멤버 접근 순서

1. 클래스 선언 2. 객체 생성 3. 멤버 데이터 저장



지금까지 작업 정리

sample1 java


class Car

{

int num;

double gas;

}

public class Sample1 {


public static void main(String[] args) {

// TODO Auto-generated method stub

Car car1 = new Car();

car1.num = 1234;

car1.gas = 20.5;

System.out.println("차량번호는"+ car1.num +"입니다.");

System.out.println("연료 양은"+ car1.gas+"입니다.");

}


}




실행결과

차량번호는1234입니다.

연료 양은20.5입니다.




2개 이상의 객체 생성


Car car1 = new Car();

car1.num = 1234;

car1.gas = 20.5;



      Car car2 = new Car();

car1.num = 1234;

car1.gas = 20.5;



만약에 클래스가 2개를 만들게 되면  .java를 컴파일 했을때 2개의 클래스 파일이 만들어진다.





메소드


이전의  '자동차' 클래스를 만들때 자동차의 다양한 기능을 메소드라는 불리는 기능으로 설명 할 수 있다.




class 차


{

차량 번호;
연료 양;                       상태 및 성질은 필드로 표현
차량 번호를 결정하기


연료를 넣기                                  기능은 메소드로 표현. 클래스 선언부에 작성

차량 번호와 연료의 양을 조사하기

}


필드와 메소드 모두 클래스의 멤버(member)라고 부른다. 실제 메소드는 다음과 같은 스타일로 클래스 선언부에 작성.

블록 안에 '사물의 기능'을 표현합니다. 


메소드 정의

리턴 값의 반환형(type) 메소드(method) 명(인수)

{

문장;
. . . return식(expression);

}



---> 이러한 작업을 메소드를 정의한다(definition)이라고 합니다.


class Car

{

...

void show() : 반환형(void) 메소드이름은 show(인자값 없음)

{

System.out.println("차량 번호는 "+ num +"입니다.");

System.out.println("연료 양은 " + gas + "입니다.");

}

...

}


메소드 호출하기


구문

객체를 가리키는 변수 이름 메소드 이름 (인수 목록);

ex) show()메소드 호출하는 코드

Car car1 = car1 new Car();

.. .

car1.show();  ---- 메소드 호출

Sample2. java 메소드 호출하기


class Car

{

int num;

double gas;


void show()  --- > 클래스 선업부에 메소드를 작성

{

System.out.println("차량 번호는" + num + "입니다.");

System.out.println("연료 양은" + num + "입니다.");

}

}


class Sample2

public static void main(string[] args)

{

Car car1;

car1 = new Car();


car1.num = 1234;
car1.gas = 20.5;


car1.show(); 메서드 호출  c
car1.show();


}

실행결과

차량 번호는1234입니다.

연료 양은1234입니다.

차량 번호는1234입니다.

연료 양은1234입니다.


필드에 접근하는 방법(this)


// 자동차 클래스

class Car

{

int num;    ---- 필드

double gas;


void show()
{

   System.out.println("차량번호는" + this.num +"입니다."); --> 자기 자신의 필드에는 this를 붙일 수 있습니다.

   System.out.println("연료량은"+ this.gas + "입니다.")

}

}



메소드 호출은 메소드가 선언된 클래스 안에서도 가능하다. 다음 예제를 보자

class Car

{

int num;

double gas;


void show()

{

System.out.println("차량번호는"+ num +"입니다.");

System.out.println("연료의양은"+ gas +"입니다.");

}

void showcar()

{

System.out.println("지금부터 자동차의 정보를 표시합니다.")

show();  --- 자기 자신의 메소드라는 뜻 // 메소드를 클래스 안에서 호출 할 경우 this.show();를 붙여서 호출 가능

}


}




public class Sample3 {


public static void main(String[] args) {

// TODO Auto-generated method stub

Car car1 = new Car();


car1.num = 1234;

car1.gas = 20.5;

car1.showCar();---> car1의 필드라는 뜻


}


}


실행결과

지금부터 자동차의 정보를 표시합니다.

차량 번호는1234입니다.

연료 양은1234입니다.



참고 http://elren.blog.me/220011176920



getter & setter


public class User {

String userName;

void setUserName(String userName) {

this.userName               = userName;

        자기자신의 인스턴스변수  = 매개변수

}


String getUserName()

{

return userName;

}

}


public class Application {

public static void main(String[] args) {
// TODO Auto-generated method stub

User user1 = new User(); //객체생성
user1.setUserName("longdi");  //바깥에서 값을 지정하여 문자열 longdi를 저장
System.out.println(user1.getUserName()); // get 지정한것을 불러들이는 역할

                 //getUserName메소드에 userName을 반환하게되면
userName이 사용된 곳으로 가게 된다.여기서는 setUserName메소드로 이동하여
                userName 변수에 지정한 문자열(longdi)을 저장하게 된다.
}
}