※ 파일 이름과 동일한 이름의 클래스 선언에만 public 접근 제한자를 붙일 수 있다 !
ex) Car.java
public class Car { ~ } // 파일 이름과 동일한 class에만 public 붙일 수 있음
class Tire { ~ }
☞ 가급적 소스 파일 하나당, 동일한 이름의 클래스 하나를 선언하는 것이 좋다
- 클래스로부터 객체를 생성하는 방법 : new 연산자 사용
🤔 new 연산자 ? 클래스로부터 객체를 생성시키는 연산자
new 클래스( );
1. 방법1
클래스 변수;
변수 = new 클래스( );
2. 방법2
클래스 변수 = new 클래스( );
⭐ 구성멤버 : 필드, 생성자, 메소드
필드; Field
= 객체의 데이터가 저장되는 곳
생성자; Constructor
= 객체 생성 시 초기화 역할 담당
메소드; Method
= 객체의 동작에 해당하는 실행 블록
(1) 필드 선언
ex)
String company = "Hyundai";
(2) 생성자 선언
ex) this.필드 ≫ this.name = name;
🤔 생성자 오버라이딩 ? 매개변수의 타입, 개수, 순서가 다르게 선언
- new 연산자로 생성자를 호출할 때 제공되는 매개값의 타입과 수에 의해 호출될 생성자가 결정된다.
※ 주의할 점 !
= 매개변수의 타입과 개수, 순서가 똑같을 경우 매개변수 이름만 바꾸는 것은 오버라이딩이라고 볼 수 없다 !!
- 생성자 오버라이딩이 많아질 경우, 생성자 간의 중복된 코드가 발생할 수 있다.
≫ 해결방법 : 필드 초기화 내용은 한 생성자에만 작성하고, 나머지 생성자는 초기화 내용을 가지고 있는 생성자를 호출하는 방법을 사용한다 ! ... 이때 this() 코드를 사용 !!
ex) 중복 코드 발생
Car(String model){
this.model = model; ┓
this.color = "sliver"; │ 중복코드
this.maxSpeed = 350; ┛
}
Car(String model, String color){
this.model = model; ┓
this.color = color; │ 중복코드
this.maxSpeed = 350; ┛
}
Car(String model, String color, int maxSpeed){
this.model = model; ┓
this.color = color; │ 중복코드
this.maxSpeed = maxSpeed; ┛
}
🤔 this 코드 ? 자신이 다른 생성자를 호출하는 코드
※ 반드시 생성자의 첫줄에서만 허용된다.
클래스명([매개변수 선언, ...] ) {
this(매개변수, ... , 값 , ...);
실행문;
}
ex) this( ) 코드 호출하여 중복 코드 줄이기
Car(String model){
this(model, "은색", 250);
}
Car(String model, String color){
this(model, color, 250);
}
Car(String model, String color, int maxSpeed){
this.model = model; ┓
this.color = color; │ 공통 실행 코드
this.maxSpeed = maxSpeed; ┛
}
(3) 메소드 선언
...
을 선언하면 된다....
메소드 호출 시 넘겨준 값의 수에 따라 자동으로 배열이 생성되고 매개값으로 사용된다.ex)
1. 메소드 선언
- 리스트 생성해서 넘겨주기
int sum2(int[] values) { ~ }
- ... 사용해서 넘겨주기
int sum2(int ... values) { ~ ]
2. 메소드 호출 시; 리스트로 나열해 주기
방1) int result = sum2(1,2,3);
방2) int[] values = {1,2,3};
int result = sum2(values);
방3) int result = sum2(new int[] {1,2,3});
🤔 어노테이션(Annotation) ?
= 메타데이터, 즉 애플리케이션이 처리해야 할 데이터가 아니라, 컴파일 과정과 실행 과정에서 코드를 어떻게 컴파일하고 처리할 것인지를 알려주는 정보이다.
@AnnotationName
※ 어노테이션의 3가지 용도
1. 컴파일러에게 코드 문법 에러를 체크하도록 정보 제공
2. SW 개발 툴이 빌드나 배치 시 코드를 자동으로 생성할 수 있도록 정보 제공
3. 실행 시 (런타임 시) 특정 기능을 실행하도록 정보 제공
⭐ 대표적인 예) @Override
= 메소드가 오버라이드(재정의) 된 것을 컴파일러에게 알려주어 컴파일러가 오버라이드 검사를 하도록 한다.