[JAVA]생성자

정원석·2023년 8월 10일
1
post-thumbnail

멤버 접근법

[객체참조.멤버명]

m3.memoryUp(768);

m3가 MP3p클래스가 생성되어 그 객체의 참조변수를 가지는 변수이다.
즉, 생성된 MP3p객체를 m3가 참조하는 것이고 이것을 통해 인자값으로 768을 전달한다.

맴버변수

instance 변수

하나의 클래스에서 여러 객체가 생성될 때 각 객체의 속성으로 자리잡은 변수이다. 객체를 생성하지 않으면 사용할 수 없다.

static 변수

하나의 클래스에서 여러 객체가 생성될 때 단 하나만 생성되며 모든 객체들이 공유한다.

생성자

메모리 내에서 객체가 생성될 때 자동으로 한번 호출되어 객체의 구조를 인식하고, 생성하는 객체의 멤버변수들을 초기화 한다.

public class MyClass1Test {
    public static void main(String[] args) {
        MyClass1 mc1 = new MyClass1();
        mc1.setName("www.sist.co.kr");
    }
}

MyClass1 > MyClass1타입의 참조변수 mc1 생성
new > 메모리 생성
MyClass1() > 생성자로 객체를 만들고 객체의 참조값을 참조변수(mc1)에 대입

생성자의 필요성

먼저 생성자가 없을 때 차번호, 연식을 초기화 하는 코드를 살펴보자

Car 클래스

public class Car {
    String carNumber;
    int carYear;

    public void initCar(String carN, int carY) {
        carNumber = carN;
        carYear = carY;
    }

    public void check() {
        System.out.println("차번호: " + carNumber);
        System.out.println("차 연식: " + carYear);
    }
}

MyCar 클래스

public class MyCar extends Car{
    public static void main(String[] args){
        MyCar sonata = new MyCar();
        sonata.initCar("12-1234", 5);

        MyCar bmw = new MyCar();
        bmw.initCar("34-3456", 0);

        sonata.check();
        bmw.check();
    }
}


Car 클래스에서 생성자 없이 초기화 하는 방법은 다음과 같다.

public void initCar(String carN, int carY) {
        carNumber = carN;
        carYear = carY;

다음의 initCar함수는 인스턴스의 초기화를 위한 함수이다.

이제 생성자를 이용해 초깃값을 초기화 해 보자.

    public Car(String carN, int CarY){
        carNumber = carN;
        carYear = carY;
    }

생성자로 초기화 하였다.

MyCar sonata = new MyCar("12-1234", 5);
MyCar bmw = new bmw("34-3456", 0);

다음 문장으로 별도의 초기화 메서드 없이 생성자가 호출되며 값들이 전달된다.

profile
Back-End-Dev

2개의 댓글

comment-user-thumbnail
2023년 8월 10일

즐겁게 읽었습니다. 유용한 정보 감사합니다.

답글 달기
comment-user-thumbnail
2023년 9월 17일

유용한 정보 감사합니다.

답글 달기