본문 바로가기

LECTURE/# java basic

[초급 JAVA]자바 class의 기본개념/객체(Object) 와 클래스 - 2

반응형

자바 class의 기본개념/객체(Object) 와 클래스 - 2

By Commin November 4, 2016


Programming

K5.java
package java_class;
public class K5 {
int carNumber = 12345;
String getTire(){
return "k5_tire";
}
String getBody(){
return "k5_body";

} String createCar(){

String car = getTire()+getBody();

}

}

저번 시간에 이어서 Class에 대해 좀더 설명하고 넘어가겠습니다. 저번시간에는 클래스와 객체가 무엇인지 설명했다면, 이번시간에는 어떻게 객체를 생성하고 사용하는지에 대해 설명하겠습니다.

일단 저번시간에 잠깐 보여드렸던 자동차 공장에 자동차를 만드는 Class 를 보시죠. K5.java 에서는 K5라는 자동차가 생산되는 설계 시스템 즉 설계도면입니다. K5라는 클래스를 거친 프로그램은 완성된 K5 자동차가 됩니다. 이 K5 자동차가 바로 객체가 됩니다. 

소스를 하나하나 보자면 , int carNumber = 12345; 는 K5자동차의 번호판 이름을 나타낼 필드 입니다. 이속성은 필요에따라 바꿀 수도있고, 고정값으로 둘 수도 있습니다. 

String getTire(),String getBody(),void createCar()는 각각 자동차의 타이어, 몸체, 완성된 자동차를 만드는 역할을 합니다. 지난 포스팅에도 말했듯이 객체는 상태와 행동의 집합체 입니다. 위 carNumber는 상태를 나타내며, 메서드들은 행동을 나타냅니다. 이것들을 객체의 멤버(member)라고도 합니다. 

소스를 열어서 보시면, 저번 K5 Class 를 조금 수정한 소스가 보입니다. 기존에 K5 class를 그냥 실행해보세요. 그러면 다음 오류가 나옵니다.

오류: Vehicle 클래스에서 기본 메소드를 찾을 수 없습니다. 다음 형식으로 기본 메소

드를 정의하십시오.

 public static void main(String[] args)

이 오류는 main 메소드가 없어서 java가 시작할 곳을 못찾을 때 나오는 오류입니다. 초창기부터 주구장창 그냥 외워서 쓰라고한 main 메서드가 지금 등장했습니다 여러분. ㅎ main 메서드는 행동의 시작부분을 java에게 알려주는 역할을 합니다. 형식은 public static void main(String [] args) 입니다. 아무튼 이 메서드가 있는 class부터 프로그램이 시작하게되며, 한 프로그램에 여러 메인메서드가 있을 수는 있지만, 그렇게 프로그램을 만들려면 자바응용프로그램을 만들때 어떤 메인으로 시작할지 지정해줘야 하는 번거로움이 생깁니다. 

아무튼 메인메서드를 작성하고 그안에 몇중 코딩합니다.

K5 car = new K5();는 객체를 생성하는 코드입니다. K5는 class 의 이름이고 car 는 객체의 이름입니다. 사실 지금까지 우리는 계속해서 객체를 생성하고 객체를 이용해 왔습니다. BufferedReader 같이 시스템 입출력에서 배웠던 클래스도 기억해보시면 BufferedReader in = new BufferedReader(...) 와 같이 객체를 만들어서 사용했던 겁니다. 객체 car를 만드는것도 이와같은 원리입니다. 객체명은 사용자의 임의대로 만들 수있지만 몇가지 제약사항이 있습니다.

  • 1car (X) : 이름의 첫번째에 숫자가 와서는 안됩니다.
  • car$ (X) : 특수문자를 사용하면 안됩니다.
  • for,if,switch 등 이미 자바에서 사용하기로 약속됭 예약어 역시 객체명으로 사용하면안됩니다.
  • 길이는 많이 길어도 상관없지만, 너무길면 관리하기 힘들기때문에 25자내로 만드는것이 보통입니다.

이렇게 만든 객체는 어떻게 사용할까요? 객체에 접근 할 때 사용하는 접근자라는 놈을 가지고 우리는 객체를 이용 할 수 있습니다. 접근자는 무엇일까요? 우리는 이미 접근자도 수없이 사용해왔습니다. 

System.out.println("안녕하세요");

여기서 System 은 자바에서 기본으로 제공해주는 클래스이며 별도의 객체를 만들지않아도 사용할 수 있는 클래스입니다. System과 out 사이에 ' . (점) ' 이 보이시나요? 이것이 우리가 수없이 사용했지만 이름조차 몰랐던 접근자라는 놈입니다. 

car.getTire()

car라는 객체에서 getTire() 라는 행동을 하는 메서드를 실행해 주세요. 라는 의미입니다. car에 접근할때 접근자 . 을 사용한것이 이제 보이시나요? 

getTire() 메서드는 문자열(String) 을 return 해줍니다. 그러니까 car라는 객체를 만들었다면, 이 객체에 접근해서 언제든지 getTire가 리턴해주는 문자열을 받아 올 수 있는겁니다. 

결과화면을 보셨나요? 문자열을 받아와서 그대로 화면에 출력했습니다. 조금더 응용해서 생각하면, 메서드 포스팅에서 배웠던 매개변수와 인자를 사용하면 좀 더 업그레이드된 코딩을 할 수있습니다.

다음 포스팅에서는 생성자에 대해서 설명하겠습니다. 


반응형