▶ 클래스 구성 요소
(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 + "입니다.");
}
}
'JAVA' 카테고리의 다른 글
java 객체 지향의 상속이란? 특징/사용법/예제 (0) | 2022.03.15 |
---|---|
[JAVA] static과 non-static 차이점 (0) | 2022.03.09 |
JAVA 객체 지향 프로그래밍이란? (+특징) (0) | 2022.03.05 |
JAVA 공백제거 방법 3가지 trim, replaceAll, charAt (0) | 2022.03.04 |
JAVA 메소드 오버로딩(overloading)이란? (0) | 2022.03.03 |
댓글