
객체의 속성 : 필드
✅ 필드는 객체의 데이터를 저장하는 역할을 함
필드의 초기화
우리가 정의하여 선언한 클래스의 필드들은 초기값을 제공하지 않으면 자동으로 기본값으로 초기화된다.

필드 사용 방법
- 필드의 값을 변경하고나 읽는 것을 "필드를 사용한다" 라고 함.
- 필드를 클래스에 선언했다고 해서 사용가능한 것이 아님 (단순 설계했을 뿐)
- 따라서 객체를 생성한 후에 필드를 사용할 수 있음
외부 접근
Car car = new Car();
객체를 생성 (인스턴스화) 했다면 참조 변수 car 을 이용해 '. ( 도트 연산자 )' 를 통해 외부에서 객체 내부의 필드에 접근할 수 있다
car.color = "blue";
내부 접근 : 그냥 바로 사용
double brakePedal() {
speed = 0;
return speed;
}
객체의 행위 : 메서드
✅ 메서드는 객체의 행위를 뜻하며 객체 간의 협력을 위해 사용
double brakePedal() {...} // double 타입 반환
char changeGear(char type) {...} // char 타입 반환
boolean onOffLights() {...} // boolean 타입 반환
void horn() {...} // 반환할 값 없음
✓ return 값으로 반환할 값의 타입이 처음에 들어가게 된다.
✓ 반환할 값이 없을 때는 리턴 타입이 void이며 반환값이 없으니 return 생략 가능
매개변수
✅ 매개 변수 : 메서드를 호출할 때 메서드로 전달하려는 값을 받기 위해 사용되는 변수
double gasPedal(double kmh, char type) {
speed = kmh;
return speed;
}
✓ 해당 매개변수에 값을 전달하기 위해서 순서와 타입에 맞춰 값을 넣어주면 됨
✓ 전달하려는 값이 없으면 생략 가능
gasPedal(100, 'D');
✓ 가변 길이의 매개변수도 선언 가능. 개수 상관없이 변수를 전달 가능합니다.
void carSpeeds(double ... speeds) {
for (double v : speeds) {
System.out.println("v = " + v);
}
}
메서드 호출 방법
외부 접근
Car car = new Car();
car.brakePedal();
객체를 생성 (인스턴스화) 했다면 참조 변수 car 을 이용해 '. ( 도트 연산자 )' 를 통해 외부에서 객체 내부의 메서드에 접근할 수 있다.
내부 접근 : 그냥 바로 사용
반환값 저장
매서드의 리턴 타입과 변수의 타입이 동일하거나 자동 타입 변환될 수 있다면 변수 안에 저장 가능
double speed = car.gasPedal(100, 'D');
메서드 오버로딩
✅ 오버로딩 : 함수가 하나의 기능만을 구현하는 것이 아니라 하나의 메서드 이름으로 여러 기능을 구현하도록 하는 Java의 기능
➡️ 즉, 한 클래스 내에 이미 사용하려는 이름과 같은 이름을 가진 메서드가 있더라도, 매개변수의 개수 또는 타입, 순서가 다르면 동일한 이름을 사용해서 메서드를 정의 가능
오버로딩의 조건
- 메서드의 이름이 같고, 매개변수의 개수, 타입, 순서가 달라야 한다
- '응답 값만' 다른 것은 오버로딩을 할 수 없음
- 접근 제어자만 다른 것도 오버로딩을 할 수 없다.
- 결론, 오버로딩은 매개변수의 차이로만 구현할 수 있습니다.
기본형 & 참조형 매개변수
기본형 매개변수
- 매개변수의 타입이 기본형일 때는 값 자체가 복사되어 넘어가기 때문에 매개값으로 지정된 변수의 원본 값이 변경되지 않는다.
- 메서드를 호출할 때 전달할 매개값으로 지정한 값을 메서드의 매개변수에 복사해서 전달합니다.
참조형 매개변수
- 매개변수를 참조형으로 선언하면 값이 저장된 곳의 원본 주소를 알 수 있기 때문에 값을 읽어 오는 것은 물론 값을 변경하는 것도 가능
- 메서드의 매개변수뿐만 아니라 반환 타입도 참조형이 될 수 있다.
- 반환 타입이 참조형이라는 것은 반환하는 값의 타입이 “실제 값의 주소”라는 의미
- 메서드를 호출할 때 전달할 매개값으로 지정한 값의 주소를 매개변수에 복사해서 전달
'내배캠_Java 6기 > Java 문법 종합반' 카테고리의 다른 글
20240809_TIL_캠프 4주차 5일_생성자와 this (0) | 2024.08.12 |
---|---|
20240808_TIL_캠프 4주차 5일_인스턴스 멤버와 클래스 멤버 (0) | 2024.08.09 |
20240809_TIL_캠프 4주차 5일_자바의 객체지향 프로그래밍과 클래스 설계 (1) | 2024.08.09 |
20240729_캠프 3주차 1일_컬렉션 (0) | 2024.07.29 |
20240726_TIL_캠프 2주차 5일_자료구조 배열 (0) | 2024.07.26 |