part.1에서 만든 Class Person을 사용하기 위해 하나의 클래스를 더 만들어보자.
이번에는 자동차를 추상화해보자 즉, 자동차 설계도를 만들자 즉, 자동차 클래스를 만들자.
▲ 클래스명은 Car로 하고 이번에는 상수도 사용해보았다. 우리가 자동차하면 생각나는 속성들 몇가지를 맴버변수로 만들었다. 여기서 소유주 owner의 자료형은 우리가 class - part.1에서 만들었던 class Person을 자료형으로 사용하였다.
▲ 맴버메소드로 자동차의 대표적인 행동(?)으로 운전을 가져와 만들었다.
▲ 마지막으로 맴버변수초기화를 위한 메소드와 최종 정보를 출력하기 위한 메소드를 만들었다.
이제 출력하기위한 CarApp.java파일에서 출력해보자.
▲ main메소드안에서 car1이라는 이름의 인스턴스변수를 선언해주고 동시에 Car형의 메모리까지 할당해주자.
그리고 잘 생성되었는지 보기위해서 출력용 메소드를 실행해보자.
▲ 하지만 역시 우리가 앞선 클래스 포스팅에서 본 것과 같이 NullPointerException오류가 발생한다.
why? 바로 printCar메소드에서 마지막 코드인 owner.printPerson에서 NullPointerException오류가 발생하기 때문이다. owner는 class Person 즉, 자료형이 Person형이기 때문에 데이터 타입이 참조형이다. 따라서 owner라는 메모리 안에는 참조하고 있는 주소값이 있어야 하는데 현재 참조할 수 있는 메모리를 할당하지 않았기 때문에 null 상태이기 때문이다.
▲ 따라서 initialize메소드를 이용해서 각 맴버변수의 초기화와 owner가 참조할 수 있는 메모리도 할당시키자.
▲ 잘 출력되는 것을 볼 수 있다.
직접 맴버변수를 초기화시키고 직접 owner도 메모리할당을 한 후 해당 메모리의 맴버변수값을 초기화 시킬 수도 있다.
▼ 출력결과는 아래와 같다.
'Java' 카테고리의 다른 글
[Java]전역변수와 지역변수 & modifier (0) | 2022.03.07 |
---|---|
[Java]접근지정자(Access Modifier) (0) | 2022.03.07 |
[Java]Class - part.2 (0) | 2022.03.04 |
[Java]Class - part.1 (0) | 2022.03.04 |
[Java]method없이 가위바위보게임 만들기 (0) | 2022.03.04 |