필드는 객체의 데이터를 저장하는 역할을 한다.
고유한 데이터
, 상태 데이터
, 객체 데이터
로 분류할 수 있음'필드를 사용한다' 라는 의미
: 필드의 값을 변경하거나 읽는 것을 의미함
: 클래스는 설계도일 뿐 실제로 필드의 데이터를 가지고 있는 것은 객체임
: 객체를 생성한 후에 필드를 사용할 수 있음
❤️🔥 클래스는 실체가 아닌 설계도 라는 것을 항상 알고 있어야 함
외부 접근
Car car = new Car();
- 이렇게 객체를 생성했다면 우리는 참조변수
car
를 이용하여 외부에서 객체 내부의 필드에 접근하여 사용할 수 있음- 이 때 객체의 내부 필드에 접근하는 방법은 도트
.
연산자를 사용하면 됨car.color = "blue";
내부 접근
- 도트 연산자를 사용하여 외부에서 객체 내부에 접근할 수 있을 뿐만 아니라 객체 내부 메서드에서도 내부 필드에 접근할 수 있음
double brakePedal() { speed = 0; return speed; }
- 이처럼
brakePedal()
메서드 내부에서 객체의 필드 speed를 바로 호출해서 사용할 수 있음
리턴타입 메서드명(매개변수, ...){
실행할 코드 작성
}
리턴타입이 void
가 아닌 경우에는 반드시 return
값이 필요하기 때문에 return문을 작성해야 한다.
double brakePedal(){} // double 타입 반환
char changeGear(char type){} // char 타입 반환
boolean onOffLights(){} // boolean 타입 반환
void horn() {} // 반환할 값 없음
: 리턴 타입이란 메서드가 실행된 후 호출을 한 곳으로 값을 반환할 때 해당 값의 타입을 의미함
return 리턴타입의 반환값;
: 주의할 점은 메서드에 리턴타입을 선언하여 반환할 값이 있다면 반드시 return문으로 해당하는 리턴타입의 반환값을 지정해야함
void
를 작성해야 함return
문을 반드시 지정할 필요는 없음return
문을 만나면 그대로 종료하게 되는데 void
타입일 때 return;
이렇게 return
문을 사용하여 원하는 지점에서 메서드를 종료할 수도 있다. (= void
여도 리턴할 수 있는 경우임)double gasPedal(double kmh, char, type){
speed = kmh;
return speed;
}
gasPeadal(100, 'D')
순서
와 타입
에 맞춰 값을 넣어주면 됨void carSpeeds(double...speeds){
for (double v : speeds){
system.out.println("v = " + v);
}
}
double...speeds
(...speeds = 가변길이) 이렇게 ...
를 사용하면 아래처럼 매개값을 ,
로 구분하여 개수 상관없이 전달 가능함carSpeeds(100, 80);
carSpeeds(110, 120, 150);
메서드를 호출한다.
:
메서드명()
메서드의 블록 내부에 작성된 코드를 실행한다는 의미
외부 접근
Car car = new car();
- 이렇게 객체를 생성했다면 우리는 참조변수 car를 이용하여 외부에서 객체 내부의 메서드에 접근하여 호출할 수 있음
- 이때 객체의 내부 메서드에 접근하는 방법은 도트(.)연산자를 사용하면 됨
car.brakePedal();
- 또한 메서드가 매개변수를 가지고 있다면 반드시 호출할 때 매개변수의 순서와 타입에 맞게 매개값을 넣어줘야 함
car.gasPedal(100, 'D')
내부 접근
- 도트 연산자를 사용하여 외부에서 객체 내부에 접근할 수 있을 뿐만 아니라 객체의 내부 메서드 에서도 내부 메서드에 접근하여 호출할 수 있음
double gasPedal(double kmh, char type){ changeGear(type); speed = kmh; return speed; }
- 이처럼
gasPedal(double kmh, char type)메서드 내부에서 해당 객체의
changeGear(type); 메서드를 호출할 수 있음
double speed = car.gasPedal(100, 'D');
double
타입의 변수 speed
를 사용하여 double gasPedal(double kmh, char type)
메서드의 double
타입의 반환값을 받아 저장할 수 있음ar[] carArray = new Car[3];
Car Caynne = new Car();
// changeGear로 필드 세팅(저장)
Caynne.changeGear('P');
carArray[0] = Caynne;
Car Gv80 = new Car();
Gv80.changeGear('N');
carArray[1] = Gv80;
Car E400 = new Car();
E400.changeGear('D');
carArray[2] = E400;
for(Car car : carArray) {
System.out.println("car.gear = " + car.gear);
}
Car car = new Car(); // 객체 생성
// 초기값 기본 값 확인 : 초기값을 준 것은 그 값이 들어가고 아닌 값은 default value가 set
System.out.println("car.model = " + car.model);
System.out.println("car.model = " + car.color);
System.out.println();
System.out.println("car.speed = " + car.speed);
System.out.println("car.gear = " + car.gear);
System.out.println("car.lights = " + car.lights);
System.out.println();
System.out.println("car.tire = " + car.tire); // 참조형 변수 주소값 할당
System.out.println("car.door = " + car.door);
System.out.println();
// 필드 사용 : 읽고 수정하는 것을 포함
car.color = "blue"; // 필드 color를 blue로 저장
car.speed = 100;
car.lights = false;
System.out.println("car.color = " + car.color);
System.out.println("car.speed = " + car.speed);
System.out.println("car.lights = " + car.lights);
public static void main(String[] args) {
Car car = new Car();
// 메서드 호출 및 반환값을 저장
double speed = car.gasPedal(100, 'D');
System.out.println("speed = " + speed);
boolean lights = car.onOffLights();
System.out.println("lights = " + lights);
System.out.println();
System.out.println("car.gear = " + car.gear);
System.out.println();
car.carSpeeds(100, 80);
System.out.println();
car.carSpeeds(110, 120, 150);
}
package week03;
public class Car {
// < 필드영역 >
// 1) 고유 데이터 영역
// 자동차 회사
String company;
// 자동차 모델
String model = "Gv80";
// 자동차 색상
String color;
// 자동차 가격
double price;
// 2) 상태 데이터 영역
// 자동차 속도, km/h
double speed;
// 기어 상태 (P, R, N, D)
char gear;
// 자동차 라이트 (true : 불 켜짐, false : 불 꺼짐)
boolean lights = true;
// 3) 객체 데이터 영역
Tire tire = new Tire();
Door door;
Handle handle;
// < 생성자 영역 >
// 생성자 : 처음 객체가 생성될 때(instance화)
// : 어떤 로직을 수행해야하며, 어떤 값이 필수로 들어와야 하는지 정의!
public Car (){
// logic / 기본 생성자(아무것도 없는 형태) : 생략이 가능
// 생성자 호출 및 객체 생성 여부 확인
// System.out.println("생성자 호출, 객체 생성");
}
// < 메서드 영역 >
// gasPedal
// input : kmh
// output : speed
double gasPedal(double kmh, char type){
// 가속도 페달을 밟으면 자동으로 기어가 변한다
changeGear(type);
speed = kmh;
return speed;
}
// brakePedal
// input : X
// output : speed
double brakePedal(){
speed = 0;
return speed;
}
// changeGear
// input : gear(char type)
// output : gear
char changeGear(char type){
gear = type;
return gear;
}
// onOffLight
// input : X
// output : Lights(boolean)
boolean onOffLights(){
lights = !lights;
return lights;
}
// horn
// input : X
// output : X
void horn(){
System.out.println("빵빵!");
}
// 자동차의 속도.. 가변길이 메서드
void carSpeeds(double ... speeds){
for(double v : speeds){
System.out.println("v = " + v);
}
}
}