public class Car { //이부분이 클래스 선언 부분
//지금부터 필드 정의
String company;
String model;
String color;
double price;
double speed;
char gear;
boolean lights;
//생성자 선언 부분: 처음 객체가 생성될 때 어떤 로직을 수행해야 하며, 어떤 값이 필수로 들어와야하는지 정의
public Car(){} // 기본생성자-> 생략이 가능
//메소드 정의 부분
public double gasPedal(double kmh){
speed = kmh;
return speed;
}
public double brakePedal(){
speed = 0;
return speed;
}
public char changeGear(char type){
gear = type;
return gear;
}
boolean onOffLights(){
lights = !lights;
return lights;
}
void horn(){
System.out.println("빵빵");
}
}
Car[] carArray = new Car[3];
Car car1 = new Car();
car1.changeGear('P');
carArray[0] = car1; //carArray에 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
public class Car { //이부분이 클래스 선언 부분
//지금부터 필드 정의
//1) 고유 데이터 영역
String company;
String model;
String color;
double price;
//2) 상태 데이터 영역
double speed;
char gear;
boolean lights;
//객체 데이터 영역
Tire tire;
Door door;
Handle hondle;
//생성자 선언 부분: 처음 객체가 생성될 때(인스턴스화 될 때) 어떤 로직을 수행해야 하며, 어떤 값이 필수로 들어와야하는지 정의
public Car(){} // 기본생성자-> 생략이 가능
...
}
[Tire 클래스 선언 및 기본 생성자 선언 -> Door, Handle도 동일]
public class Tire {
public Tire(){
System.out.println("타이어가 생성되었습니다.");
}
}
public class Car { //이부분이 클래스 선언 부분
//지금부터 필드 정의
//1) 고유 데이터 영역
String company;
String model;
String color;
double price;
//2) 상태 데이터 영역
double speed;
char gear;
boolean lights;
//객체 데이터 영역
Tire tire;
Door door = new Door();
Handle hondle = new Handle();
//생성자 선언 부분: 처음 객체가 생성될 때(인스턴스화 될 때) 어떤 로직을 수행해야 하며, 어떤 값이 필수로 들어와야하는지 정의
public Car(){} // 기본생성자-> 생략이 가능
//메소드 정의 부분
public double gasPedal(double kmh, char type){
changeGear(type);
speed = kmh;
return speed;
}
public double breakPedal(char type){
speed = 0;
type = 'P';
changeGear(type);
return speed;
}
public char changeGear(char type){
gear = type;
return gear;
}
boolean onOffLights(){
lights = !lights;
return lights;
}
void horn(){
System.out.println("빵빵");
}
Tire setTire(Tire tireCompany){
tireCompany.company = "KIA";
tire = tireCompany;
return tire;
}
}
public class Main {
public static void main(String[] args) {
Car car = new Car();
//기본형 매개변수
char type = 'D';
car.breakPedal(type);
//메소드 실행 완료 후 전달할 매개값으로 지정된 type 값 확인
System.out.println("type = " + type );
//메소드 실행 완료 후 반환된 car 인스턴스의 gear 타입 확인
System.out.println("gear = "+ car.gear);
System.out.println();
//참조형 매개변수
Tire tire = new Tire(); //tire객체 생성
tire.company = "금호";
//차 객체의 타이어를 등록하는 메소드 호출한 후 반환값으로 차 객체의 타이어 객체 변환
Tire carInstanceTire = car.setTire(tire);
//메소드 실행 완료 후 전달할 매개값으로 지정된 참조형 변수 tire의 company 값 확인
System.out.println("tire.company = " + tire.company); //전달할 매개 값으로 지정된 tire 인스턴스의 주소값이 전달되었기 때문에 호출된 메소드에 의해 값이 변경됨
System.out.println("carInstanceTire.company = "+ carInstanceTire.company);
}
}
출력값:
type = D
gear = P
tire.company = KIA
carInstanceTire.company = KIA
=> 기본형 매개변수는 원본 값이 변경되지 않지만 참조형 매개변수는 원본 값이 변경이 됨
[추가]
public class Example {
public static void modifyPrimitive(int number) {
number = number * 2;
System.out.println("Modified value inside method: " + number);
}
public static void main(String[] args) {
int original = 5;
System.out.println("Original value before method call: " + original);
modifyPrimitive(original);
System.out.println("Original value after method call: " + original);
}
}
Original value before method call: 5
Modified value inside method: 10
Original value after method call: 5
import java.util.ArrayList;
public class Example {
public static void modifyArrayList(ArrayList<Integer> list) {
list.add(100);
System.out.println("Modified list inside method: " + list);
}
public static void main(String[] args) {
ArrayList<Integer> originalList = new ArrayList<>();
originalList.add(5);
System.out.println("Original list before method call: " + originalList);
modifyArrayList(originalList);
System.out.println("Original list after method call: " + originalList);
}
}
Original list before method call: [5]
Modified list inside method: [5, 100]
Original list after method call: [5, 100]
}
}public Car (String model, String color, double price) {
this.model = model;
this.color = color;
this.price = price;
}
이 인스턴스의 model(color, price)에 매개변수로 받은 model(color, price)를 전달
Car returnInstance() {
return this;
}
public Car (String model) {
this(model, "Blue", 5000);
}
public Car (String model, String color) {
this(model, color, 10000);
}
public Car (String model, String color, double price) {
this.model = model;
this.color = color;
this.price = price;
}
오늘의 목표는 자바 3주차 강의를 완강하는 거이였는데 3-10까지 밖에 듣지 못했다. 내일은 그래도 나머지 3주차 강의와 4주차 강의를 모두 들어야 할 것 같다.