자바 class의 기본개념/객체(Object) 와 클래스 - 2
By Commin .November 4, 2016
Programming
저번 시간에 이어서 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가 리턴해주는 문자열을 받아 올 수 있는겁니다.
결과화면을 보셨나요? 문자열을 받아와서 그대로 화면에 출력했습니다. 조금더 응용해서 생각하면, 메서드 포스팅에서 배웠던 매개변수와 인자를 사용하면 좀 더 업그레이드된 코딩을 할 수있습니다.
다음 포스팅에서는 생성자에 대해서 설명하겠습니다.
- Commin's JAVA BASIC Category
- 자바 이클립스 설치 및 환경변수 설정
- 자바 문법의 개념 및 용어
- 자바 기본 입출력
- 자바 제어문
- 자바 메서드 및 배열
- 자바 클래스
- [초급 JAVA]자바 class의 기본개념/객체(Object) 와 클래스 - 1
- [초급 JAVA]자바 class의 기본개념/객체(Object) 와 클래스 - 2
- [초급 JAVA]자바 생성자로 초기화 하고 코딩하기/JAVA Constructor
- [초급 JAVA]자바 this,static,final 지정예약어 - final
- [초급 JAVA]자바 this,static,final 지정예약어 - this & this()
- [초급 JAVA]자바 this,static,final 지정예약어 - static
- [초급 JAVA]자바 상속(extends) 예제로 이해하기/ super & super() 이해하기
- [초급 JAVA]자바 interface 와 abstract 예제로 이해하기
'LECTURE > # java basic' 카테고리의 다른 글
[초급 JAVA]예제-생성자 - 로또 프로그램 만들기(lotto program) (5) | 2016.11.21 |
---|---|
[초급 JAVA]자바 생성자로 초기화 하고 코딩하기/JAVA Constructor (2) | 2016.11.08 |
[초급 JAVA]자바 class의 기본개념/객체(Object) 와 클래스 - 1 (1) | 2016.09.30 |
[초급 JAVA]예제-학생 시험 성적 평균 & 석차 입력/출력 프로그램 (0) | 2016.09.29 |
[초급 JAVA]자바 배열 (단일차원배열/다중배열/이중배열) - 선언 & 초기화 (0) | 2016.09.28 |