클래스(class)
포스트
취소

클래스(class)

클래스(class)란?

  • Java에서 객체를 정의하는 틀 또는 설계도
  • 구성
    • 필드(field)
      • 객체의 상태
      • 클래스에 포함된 변수
    • 메소드(method)
      • 객체의 행동
      • 어떠한 특정 작업을 수행하기 위한 명령문의 집합

인스턴스(instance)란?

  • 선언된 해당 클래스 타입의 객체
  • 메모리에 할당된 객체
  • 하나의 클래스로부터 여러 개의 인스턴스를 생성할 수 있다.
  • 인스턴스는 독립된 메모리 공간에 저장된 자신만의 필드를 가질 수 있다.
  • 해당 클래스의 모든 메소드(method)는 해당 클래스에서 생성된 모든 인스턴스가 공유하게 된다.

클래스의 인스턴스화란?

  • 클래스로부터 객체를 선언하는 과정
  • Java에서 클래스를 사용하기 위해서는 해당 클래스 타입의 객체를 선언해야 한다.

클래스 정의 방법

접근제어자 class 클래스이름 {
    접근제어자 필드1의타입 필드1의이름;
    접근제어자 필드2의타입 필드2의이름;
    ...
    접근제어자 메소드1의 원형
    접근제어자 메소드2의 원형
    ...
};

인스턴스의 생성 방법

//원형
객체참조변수이름 = new 클래스이름();

//예시
Car myCar = new Car();

생성자(constructor)란?

  • 객체의 생성과 동시에 인스턴스 변수를 원하는 값으로 초기화할 수 있는 메소드
  • Java에서 생성자(constructor)의 이름은 해당 클래스의 이름과 같아야 한다.
  • 특징
    • 생성자는 반환값이 없지만 반환 타입을 void형으로 선언하지 않는다.
    • 생성자는 초기화를 위한 데이터를 인수로 전달받을 수 있다.
    • 객체를 초기화하는 방법이 여러 개 존재할 경우에는
      하나의 클래스가 여러 개의 생성자를 가질 수 있다.
      • 생성자도 메소드이기 때문에 메소드 오버로딩이 가능하다.
  • 사용 예시
//매개변수가 없는 생성자 선언
클래스이름() {
    //초기화 내용
}

//매개변수가 있는 생성자 선언
클래스이름(인수1, 인수2, ...) {
    //초기화 내용
}

//예시
class Car {
    private String name;

    Car(){
        this.name = "미출시";
        System.out.println(name);
    }

    Car(String name){
        this.name = name;
        System.out.println(name);
    }
}

Car temp1 = new Car(); //출력 : 미출시
Car temp2 = new Car("람보르기니"); //출력 : 람보르기니

클래스를 가지고 객체를 생성하면 해당 객체는 메모리에 즉시 생성된다.

이렇게 생성된 객체는 모든 인스턴스 변수가 아직 초기화되지 않은 상태다.

this 참조 변수

  • 인스턴스가 바로 자기 자신을 참조하는 데 사용하는 변수
  • 해당 인스턴스의 주소를 가리킨다.
  • 사용 예시
class Car {
    private String name;

    Car(){
        this.name = "미출시";
        System.out.println(name);
    }

    Car(String name){
        this.name = name;
        System.out.println(name);
    }
}

Car temp1 = new Car(); //출력 : 미출시
Car temp2 = new Car("람보르기니"); //출력 : 람보르기니

this() 메소드

  • 생성자 내부에서만 사용할 수 있는 메소드
  • 같은 클래스의 다른 생성자를 호출할 때 사용한다.
  • 인수를 전달해서 사용하면 생성자 중에서 메소드 시그니처가 일치하는 다른 생성자를 찾아 호출한다.
  • 사용 예시
class Car {
    private String name;

    Car(){
        this("람보르기니");
    }

    Car(String name){
        this.name = name;
        System.out.println(name);
    }
}

Car temp = new Car("람보르기니"); //출력 : 람보르기니
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.