Java

220109 혼자공부하는자바 Ch6~ 모르는 부분 리마인드

행인데어 2022. 1. 11. 23:51

Chapter6. 클래스

06-1) 객체 지향 프로그래밍

클래스 변수 = new 클래스( );

06-3) 생성자

생성자 선언

필드 초기화

클래스로부터 객체가 생성될 때, 필드는 기본 초기값으로 자동 설정됨

다른 값으로 초기화하고 싶다면

1) 필드를 선언할 때 초기값을 주는 방법

2) 생성자에서 초기값을 주는 방법

06-4) 메소드

생성자 선언

필드 초기화

클래스로부터 객체가 생성될 때, 필드는 기본 초기값으로 자동 설정됨

다른 값으로 초기화하고 싶다면

1) 필드를 선언할 때 초기값을 주는 방법

public class Korean {
String  nation = "대한민국";  //Korean클래스에 nation필드를 선언하면서 "대한민국"으로 초기값을 줌
String name;
String ssn;
}
Korean K1 = new Korean();
Korean K2 = new Korean(); 
//Korean클래스로부터 k1, k2 객체를 생성하면서 k1, k1객체의 nation 필드에는 모두 "대한민국"이 저장됨

2) 생성자에서 초기값을 주는 방법

객체 생성 시점에 외부에서 제공되는 다양한 값들로 초기화되어야 한다면 생성자에서 초기화해야 함

public class Korean {
	//필드
	String nation = "대한민국";
	String name;
	String ssn;
	
	//생성자
	public Korean(String n, String s) {
		name = n;
		ssn = s;
	}
}
객체 생성 후 필드값 출력
Korean k1 = new Korean("박자바","011225-1234567");
Korean k2 = new Korean("김자바","930505-1234567");

 

생성자 오버로딩

- 개념: 매개 변수를 달리하는 생성자를 여러 개 선언하는 것

//생성자1
Car() {
}
//생성자2
Car(String model) {
	this.model = model;
}
//생성자3
Car(String model, String color) {
	this.model = model;
	this.color = color;
}

 

다른 생성자 호출: this()

- 개념: 필드 초기화 내용은 한 생성자에서만 집중적으로 작성하고, 나머지 생성자는 초기화 내용을 가지고 있는 생성자를 호출해서, 생성자 간의 중복된 코드를 줄임

- this()는 반드시 생성자 첫 줄에서만 허용

 

다른 생성자 호출해서 중복 코드 줄이기

public class Car {
	//Car 클래스 필드 선언(객체데이터 저장)
	String company = "ㅇㅇ자동차";
	String model;
	String color;
	int maxSpeed;

	//생성자1
	Car() {
	}
	
	Car(String model) {
		this(model, "은색", 250);
	}
	
	Car(String model, String color) {
		this(model, color, 250);
	}
	
	Car(String model, String color, int maxSpeed) {
		this.model = model;
		this.color = color;
		this.maxSpeed = maxSpeed;   //공통 실행 코드
	}
}

 

객체 생성시 생성자 선택

public class CarExample {
	public static void main(String[] args) {
		// 생성자1 선택
		Car car1 = new Car(); 
		System.out.println("car1.company : "+car1.company);
		System.out.println();
		
		// 생성자2 선택
		Car car2 = new Car("자가용"); 
		System.out.println("car2.company : "+car2.company);
		System.out.println("car2.model : "+car2.model);
		System.out.println();
		
		Car car3 = new Car("자가용","빨강"); 
		System.out.println("car3.company : "+car3.company);
		System.out.println("car3.model : "+car3.model);
		System.out.println("car3.color : "+car3.color);
		System.out.println();	
	}
}