객체 생성과 참조형 변수
- 객체 생성
객체 생성 연산자 New 사용시 클래스로부터 객체 생성 가능
객체가 생성되면서 생성자 역시 호출
- 참조형 변수
new 연산자를 통해 객체 생성 시 해당 인스턴스 주소 반환되기에 해당 클래스 참조형 변수 사용시 받아줄 수 있음
- 객체 배열
객체는 참조형 변수와 동일하게 취급 -> 배열 또는 컬렉션에 저장하여 관리 가능
객체의 속성 ( 필드 )
필드는 객체의 데이터를 저장하는 역활
- 객체의 필드의 분류
고유한 데이터 / 상태 데이터 / 객체 데이터
- 필드의 초기값과 초기화
사용자가 정의하여 선언한 클래스는 초깃겂 제공 안 할 시 자동으로 기본 값으로 초기화
초깃값 제공 방법 : '필드타입 필드명 = 값;'으로 직접 초기화
- 외부에서 필드에 접근
Car car = new Car();
-> 도트 연산자 이용해서 접근
car.color = "asd";
- 내부에서 필드에 접근
double brakePedal(){
speed = 0;
return speed;
}
-> 메서드 내부에서는 객체의 필드 speed를 바로 호출해서 사용 가능
객체의 행위 : 메서드
메서드는 객체의 행위를 뜻하며 객체간에 협력을 위해 사용
-
메서드 선언
[ Return type ] ( 매개변수, ... ) {
logic
}
- Return type
메서드가 실행 후 호출한 곳으로 값 반환시 해당 반환 값의 타입을 의미한다.
- 매개변수
메서드를 호출할 때 메서드로 전달하려는 값을 받기 위해 사용되는 변수
double gasPedal(double kmh, char type) {
speed = kmh;
return speed;
}
-
메서드 호출 방법
메서드 호출이란?
메서드의 로직(내부 코드)을 실행한다는 의미
클래스는 설계도 메서드는 객체의 행위
-> 객체를 생성한 후에 메서드 사용가능
외부 접근과 내부 접근 역시 필드와 동일하게 접근 가능
하지만 메서드는 매개변수 순서와 타입을 고려해서 접근해야함 또한 반환값 역시 있다면 받아줄 수 있음
-
메서드 오버로딩
함수가 하나의 기능만을 구현하는 것이 아닌 하나의 메서드 이름으로 여러 기능 구현 하도록 하는것
= 한 클래스 내에 이름 동일한 메서드 있더라도 매개 변수의 개수, 타입 순서가 다를시 동일한 이름을 사용해서 메서드를 정의 가능
-
오버로딩의 조건
- 메서드의 이름이 같고, 매개변수의 개수, 타입, 순서가 달라야 합니다.
- '응답 값만' 다른 것은 오버로딩을 할 수 없습니다.
- 접근 제어자만 다른 것도 오버로딩을 할 수 없습니다.
+) 결론, 오버로딩은 매개변수의 차이로만 구현 가능
- 오버로딩의 장점
- 메서드 이름 하나로 상황에 따라 동작 개별로 정의 가능
- 메서드 이름 절약가능
- 기본형 & 참조형 매개변수
- 기본형 : 메서드 호출시 전달 매개값을 메서드의 매개 변수에 복사하여 전달
값 자체가 복사 되기에 매개값 지정 변수 원본 값 변화없음
- 참조형 : 메서드 호출시 전달 매개값 주소를 매개 변수에 복사하여 전달
값의 원본 주소를 복사하기에 값을 읽어오기도 원본의 값을 변경하는 것도 가능하다.
메서드 매개변수 만이 아닌 반환 타입도 참조형이 될 수 있음