본문 바로가기
JAVA

JAVA 클래스 선언과 생성자, 객체 생성(+getter/setter)

by 자바비터 2022. 3. 7.

▶ 클래스 구성 요소

(1) 멤버 : 필드(Field), 메소드(Method)

(2) 생성자

- 참고 : 지역 변수는 메소드 내부에 선언된 변수. 매개 변수도 일종의 지역 변수이다.

 

*필드와 지역 변수의 차이

- 필드는 기본 값이 있지만, 지역변수는 기본 값이 없어 반드시 초기화

(필드는 값을 할당하지 않아도 기본 값을 할당 받게 된다.)

- 필드는 클래스 전체에서 사용할 수 있지만 지역 변수는 선언된 블록 내부에서만 사용 가능

 

 

▶ 클래스 선언과 파일

- 보통 소스 파일마다 하나의 클래스를 선언하지만, 2개 이상의 클래스를 하나의 파일 선언 가능

- 하나의 파일에 클래스가 둘 이상 있다면 하나만 public으로 선언할 수 있고,

해당 클래스 이름은 소스 파일 이름과 동일해야함

 

▶ 객체 생성

클래스이름 변수 = new 클래스이름()

  

 

▶ 생성자

: 객체가 생성될 때 초기화를 위해 실행되는 메소드로서 객체를 생성하는 시점에서 필드를 다양하게 초기화할 수 있다.

 

생성자의 특징

- 생성자는 메소드이다.

- 생성자 이름은 클래스 이름과 반드시 동일해야 한다.

- 생성자 여러개 작성 가능하다.(오버로딩 가능)

- 생성자는 new를 통해 객체를 생성할 때, 객체당 한 번 호출할 수 있다.

- 생성자는 리턴 타입을 지정할 수 없다.

- 생성자의 목적은 객체를 초기화하는 것이다.

- 생성자는 객체가 생성될 때 반드시 호출된다.

- 그러므로 하나 이상 선언되어야 한다.

☆ 개발자가 생성자를 작성하지 않았으면 컴파일러가 자동으로 기본 생성자를 삽입한다.

→ 기본 생성자(디폴트 생성자) : 매개변수 없고 아무 작업 없이 단순 리턴하는 생성자

 

 

 

▶ 접근자와 설정자

접근자와 설정자는 클래스 내부에 캡슐화된 멤버를 외부에서 사용할 때 필요하다.

- private으로 지정된 필드에 값을 반화하는 접근자와 값을 변경하는 설정자는 공개된 메소드

- 일반적으로 접근자는 get, 설정자는 set으로 시작하는 이름을 사용한다.

- 필드 이름을 외부와 차단해서 독립시키기 때문에 필드 이름 변경이나 데이터 검증도 가능하다.

 

생성자 및 getter/setter 예제
package kh1221;

public class Ex02CarDesign {
	String carName;
	String carColor;
	int carSize;
	int velocity;
	
	//4개의 매개변수(데이터 전체)를 받는 생성자
	public Ex02CarDesign(String carName, String carColor, int carSize, int velocity) {
		this.carName = carName;
		this.carColor = carColor;
		this.carSize = carSize;
		this.velocity = velocity;
	}
	//매개변수를 받아서 필드에 저장하는 setter메소드
	public void setCarName(String carName) {
		this.carName = carName;
        //필드변수인 this.carName에 입력받은 매개변수 carName을 대입
	}	
	public void setCarColor(String CarColor) {
		this.carColor = CarColor;
	}	
	public void setCarSize(int carSize) {
		this.carSize = carSize;
	}
	public void setCarvelcidy(int velocity) {
		this.velocity = velocity;
	}
	//저장된 값은 return하는 getter메소드
	public String getCarName() {
		return carName;
	}
	public String getCarColor() {
		return carColor;
	}
	public int getCarSize() {
		return carSize;
	}
	public int getVelocity() {
		return velocity;
	}
	//일반 메소드
	public void speedUp() {
		velocity++;
	}
	public void stop() {
		velocity = 0;
	}
	public void park() {
		System.out.println("주차합니다");
	}
}

  

생성자 객체 생성 및 메소드 사용 예제
package kh1221;

public class Ex02 {

	public static void main(String[] args) {
		//생성자(생성자는 특수 메소드) 중 데이터 전체를 입력하는 생성자를 만들어 사용
		Ex02CarDesign yourCar = new Ex02CarDesign("그랜저", "검은색", 2500, 60);
		
		//getter 메소드를 활용해 생성자로 입력된 데이터를 획득
		String carName = yourCar.getCarName();
		String carColor = yourCar.getCarColor();
		int carSize = yourCar.getCarSize();
		//speedUp 메소드를 활용해 차량 속도 증가
		yourCar.speedUp();
		yourCar.stop();
		yourCar.speedUp();
		
		int velocity = yourCar.getVelocity();
		
		System.out.println("당신 차 정보 출력>> ");
		System.out.println("차 이름 : " + carName + ", 색상 : " + carColor + ", 배기량 : "
				+ carSize + "cc, 현재 속도 : " + velocity + "입니다.");
	}
}

생성자 및 메소드 사용예제 결과 화면

 

댓글