본문 바로가기
Java 강의

자바 객체 / 클래스

by 자유코딩 2017. 9. 29.

이번 글에서는 자바의 객체와 클래스에 대해서 알아보도록 하겠습니다

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public class Class1 {
    public static void main(String[] args) {
        Class2 c1 = new Class2();//Class2의 인스턴스 c1을 생성한다
        //c1객체에는 Class2를 참조할 수 있는 주소가 저장된다
        c1.number = 1;//c1객체에 들어있는 주소를 통해서 number에 1을 저장한다
        c1.name = "이름";//c1객체에 들어있는 주소를 통해서 name에 "이름"을 저장한다
        
        System.out.println(c1.number);//저장한 c1.number를 출력한다
        System.out.println(c1.name);//저장한 c1.name을 
    }
}
class Class2{//Class2 class 생성
    int number;//클래스 안에 int형 변수 number를 선언한다
    String name;//클래스 안에 String형 변수 name을 선언한다
}
cs

 

지금까지의 소스코드처럼 자바의 소스코드는 Class 안에 main 함수가 존재하는 형태입니다.

 

자바에서 객체는 클래스로부터 생성된 것을 말합니다.

위의 코드에서는 Class2 c1 = new Class2();를 보시면 c1을 객체라고 합니다.

또한 c1은 Class2의 인스턴스 입니다.

 

객체란 현실세계에 존재하는 모든 사물들은 다 객체입니다.

자바 프로그래밍 언어는 그런 객체들을 소스코드로 표현합니다.

 

자바의 클래스는 객체를 생성하는 설계도 입니다.

클래스는 속성과 메소드를 가집니다.

속성은 클래스 안에 있는 데이터들입니다.

속성은 필드라고도 부릅니다.

 

메소드는 객체의 동작을 정의한 함수입니다.

 

클래스도 하나의 객체입니다.

예를 들어서 현실세계의 강아지 객체를 자바 코드로 표현해보겠습니다.

1
2
3
4
5
6
7
public class Dog{
    private double height;
    private double weight;
    public void bark(){
        System.out.println("멍멍");
    }
}
cs

 

main 함수가 포함된 클래스도 정의해보겠습니다.

1
2
3
4
5
6
7
8
9
public class Main{
    public static void main(String[] args){
        Dog dog1 = new Dog();//Dog클래스의 인스턴스 dog1 생성
        dog1.height = 100.0;//dog1의 키가 얼마나 큰지 입력했습니다.
        dog1.weight = 50.0;//dog1의 몸무게가 얼마인지 입력했습니다.    
        
        dog1.bark();//Dog 클래스 안에 있는 bark함수를 호출해서 "멍멍"을 출력합니다.
    }
}
cs

 

코드에 주석으로 설명을 적었습니다.

main 함수에서 Dog 클래스의 인스턴스 dog1을 생성했습니다.

dog1.height = 100.0;으로 dog1의 키를 적었습니다.

dog1과 height사이에는 .이 있습니다.

 

객체의 생성은 new연산자를 사용해서 할 수 있고 객체의 필드,메소드 접근하는 것은 도트연산자 (.) 쩜을 사용해서 할 수 있습니다.

 

Dog 클래스처럼 main메소드가 없는 대부분의 클래스는 외부의 클래스에 이용할 목적으로 설계된 라이브러리 클래스라고 합니다.

 

객체에 대해서 짧게 정리하면 다음과 같습니다.

 

객체
                           ┌객체가 취할 수 있는 행동 → 메소드(함수)
    상태(속성)과 동작을 가지고 있는 것
        └객체의 특징값(속성) → 변수

객체

   1. 객체의 생성 : new 연산자를 통해서 힙영역에 생성
   2. 객체의 사용 : 참조변수를 이용해서 필드 및 메소드를 사용함
   3. 객체의 소멸 : 참조를 잃으면 가비지컬렉터에 의해 소멸

 

클래스에 대해서 짧게 정리하면 다음과 같습니다.

 

클래스
    객체를 만드는 설계도

        클래스의 선언
                public class 클래스이름 {
                }

클래스에서의 변수와 필드
변수 : 생성자와 메소드 내에서만 사용하고 생성자와 메소드가 실행종료되면 소멸됩니다

필드 : 클래스 { } 안에서 어디든지 선언가능합니다
        (생성자와 메소드 안은 제외됩니다 -> 생성자와 메소드 안에 선언된 변수는 메소드의 지역 변수입니다)

 

일반적으로 소스파일(.java) 당 하나의 클래스를 선언합니다. 하지만 두개 이상의 클래스도 선언 가능합니다
두개 이상의 클래스가 있는 소스파일을 컴파일하면 바이트 소스코드(.class)가  클래스 갯수만큼 생성됩니다

*주의점 : 파일이름과 동일한 클래스이름의 클래스 선언에만 public을 붙일 수 있습니다.

예를 들어서 이렇게 패키지에 모습이 있다고 해보겠습니다.

 

여기 java 파일 Add.java , Add2.java , print.java , VariableEx.java 4개의 java 파일이 있습니다.

각각의 java 코드 파일 안에는 public class Add , public class Add2 , public class print , public class VariableEx 클래스가 정의되어 있습니다.

이렇게 파일 이름과 동일한 클래스 이름에만 public을 붙여서 public class Add와 같이 클래스 선언을 할 수 있는 것입니다.


그리고 가급적 소스파일 하나당 동일한 이름의 클래스는 하나만 선언하는 것이 좋습니다.

거의 모든 자바 코드들에 소스파일 하나에 클래스 하나가 작성되어 있습니다.

또한 파일 하나,하나에서 각각의 객체를 표현한다고 했을때 그렇게 파일 하나에 클래스 하나를 작성하는 것이 옳습니다.

 

이번 글에서는 자바의 객체와 클래스에 대해서 알아보았습니다.

 

jswoo030@gmail.com으로 메일을 보내주시면 빠른 답변을 받으실 수 있습니다

댓글