이유
- 외부 객체에서 해당 필드와 메서드를 잘못 사용하여 객체가 변하지 않게 한다.
- 보안때문에 중요할 수 있다. 필요하지 않은 것을 굳이 외부로 노출시키지 않아 혼란을 줄인다
객체의 데이터를 저장하는 역할
데이터 타입(data type ) | 기본값 (defalut ) |
---|---|
byte | 0 |
char | \n0000 (공백) |
short | 0 |
int | 0 |
long | 0L |
float | 0.0F |
double | 0.0 |
boolean | false |
배열 | null |
클래스 | null |
인터페이스 | null |
.
:dot)연산자를 사용하여 접근한다.필드를 사용한다 = 필드의 값을 변경하거나 읽는다.
우리가 클래스에 필드를 정의하여 선언했다고 해서 바로 사용할 수 있는 것은 아니다.
클래스는 설계도일뿐 실제로 필드의 데이터를 가지고 있는 것은 객체이다
따라서 객체를 생성한 후에 필드를 사용할 수 있다.
Tire tire = new Tire();
이렇게 초기화를 하게 되면 주소값이 할당된다.
🚨 클래스는 객체가 아니다. 설계도다. ex) 붕어빵 틀
변수를 넣은 것을 제어할 수 있는 것이 메서드
리턴타입 메서드명(매개변수, ...) {
실행할 코드
}
double brakePedal() {...} // double 타입 반환
char brakePedal() {...} // char 타입 반환
boolean brakePedal() {...} // boolean 타입 반환
void brakePedal() {...} // 반환할 값 없음
만약 return type이
void
가 아니라면 반드시 리턴하는 것이 있어야 한다 ➡️ 반드시 return문이 있어야한다.
반환할 값이 없을때는 리턴타입에 void
를 작성한다.
void
타입일 때 return;
이렇게 return 문을 사용하여 원하는 지점에서 메서드를 종료할 수도 있다.double gasPedal(double kmh, char type) {
speed = kmh;
return speed;
}
gasPedal(double kmh, char type)
메서드의 매개변수는 double
타입의 kmh
, char
타입의 type
이다.void carSpeeds (double ... speeds) {
for(double v : speeds) {
System.out.println("v = " + v);
}
}
car.carSpeeds(100, 80);
car.carSpeeds(110, 120, 150);
double ... speeds
이렇게 ...
을 사용하면 매개값을 ,
로 구분하여 개수 상관없이 전달이 가능하다메서드를 호출할 때 전달할 매개값으로 지정한 값을 메서드의 매개변수에 복사해서 전달한다.
메서드를 호출할 때 전달할 매개ㄱ밧으로 지정한 값의 주소를 매개변수에 복사해서 전달한다.
함수가 하나의 기능만을 구현하는 것이 아니라 하나의 메서드 이름으로 여러 기능을 구현하도록하는 Java의 기능
∴ 오버로딩은 매개변수의 차이로만 구현할 수 있다.
println()
이 있다println()
의 매개변수로는 int
, double
, String
, boolean
등 다양하게 넣을 수 있다.println()
는 printlnInt()
, printlnDouble()
처럼 메서드명이 길어지고 낭비되었을 것이다.