반응형
이전에 만든 class Car로 객체를 만들어봅시다.
[JAVA] 클래스 설계 방법
클래스의 구성 필드(속성), 생성자(어떻게 만들 것인지). 메서드(행위)로 이루어짐 https://ittrue.tistory.com/117 클래스의 구성 및 객체에 대한 자세한설명!! 참고해서공부하기! 클래스를 만들때 해야
dev-story93.tistory.com
객체 생성
객체생성
- 이전에 만든 Car클래스를 사용할수있는 이유는 접근제어자를 public로 만들었기 때문이다.
new Car(); // Car클래스 객체 생성
- 객체생성 연산자인 'new'를 사용하면 클래스로부터 객체를 만들 수 있다.
- new 연산자 뒤에는 호출할 클래스의 생성자 호출코드를 작성합니다.
- Car( );즉, 기본 생성자의 형태와 같기 때문에 new 연산자에 의해 객체가 생성되면서 기본 생성자가 호출됩니다.
참조형 변수
Car car1 = new Car(); // Car클래스의 객체인 car1 인스턴스 생성
Car car2 = new Car(); // Car클래스의 객체인 car2 인스턴스 생성
- new연산자를 통해 객체가 생성되면 해당 인스턴스 주소가 반환되기 때문에 해당클래스의 참조형 변수를 사용하여 받아줄 수 있다.
- 이 부분 아직 명확하게 이해가 되지 않는다. 아마 다른 클래스의 값을 다른 주소로 만들어준다는 의미인 것 같다.
- 참조형 변수는 복잡해서 별도공간에 저장하고 주소를 쓴다 객체도 마찬가지다.
public class Main {
public static void main(String[] args) {
Car car1 = new Car(); //class(설계도)를 이용해서 신규의 객체를 만들때 new를 이용해야한다.
}
}
객체배열
- 위에서 말했듯 객체는 참조형 변수와 동일하게 취급되어 배열 또는 컬렉션에도 저장하여 관리할 수 있다.
코드로 정리해서 보면 다음과 같다. (객체를 배열로 정리한 것)
Car 클래스의 코드
public class Car {
String company; // 자동차 회사
String model; // 자동차 모델
String color; // 자동차 색상
double price; // 자동차 가격
double speed; // 자동차 속도 , km/h
char gear; // 기어의 상태, P,R,N,D
boolean lights; // 자동차 조명의 상태
public Car() {} // 기본 생성자
double gasPedal(double kmh) {
speed = kmh;
return speed;
}
double brakePedal() {
speed = 0;
return speed;
}
char changeGear(char type) {
gear = type;
return gear;
}
boolean onOffLights() {
lights = !lights;
return lights;
}
void horn() {
System.out.println("빵빵");
}
}
Main클래스의 코드
public class Main {
public static void main(String[] args) {
Car[] carArray = new Car[3];
Car car1 = new Car();
car1.changeGear('P');
carArray[0] = car1;
Car car2 = new Car();
car2.changeGear('N');
carArray[1] = car2;
Car car3 = new Car();
car3.changeGear('D');
carArray[2] = car3;
for (Car car : carArray) {
System.out.println("car.gear = " + car.gear);
}
}
}
// 출력
//car.gear = P
//car.gear = N
//car.gear = D
- Q.) 여기서 궁금한 점.. 객체배열을 사용하였을 때 실제 생기는 객체는 3개인가 4개인가?.
- 객체배열로 묶는 것도 객체로 생각하면 되는지 궁금하다. 아무래도 new 연산자를 썼기 때문에 4개인 것 같다고 생각한다.
여기까지 객체 생성방법에 대해 배웠다.
다음은 객체의 필드(속성), 메서드(행위) 사용방법에 대해 배워보자
반응형
'언어(language) > 자바(Java)' 카테고리의 다른 글
| [JAVA] 인스턴스 멤버와 클래스 멤버 (2) | 2023.10.19 |
|---|---|
| [JAVA] 메서드 오버로딩 println( ); , 기본형 참조형 매개변수 (0) | 2023.10.19 |
| [JAVA] 객체의 필드와 메서드 (0) | 2023.10.18 |
| [JAVA] 클래스 설계 방법 (0) | 2023.10.18 |
| [JAVA] 객체지향 프로그래밍? (1) | 2023.10.18 |