[객지프] 1 page summary - 클래스 기본
클래스
: 속성과 기능을 가지고 있는 설계도
- 클래스로부터 만들어진 객체를 해당 클래스의 instance라고 한다.
- 하나의 클래스로부터 여러 개의 instance를 만들 수 있다.
클래스 명명 규칙
- 대문자로 시작(알파벳 대소문자 구분)
- 되도록 영어 이름으로 작성
- 첫 글자와 연결된 다른 단어의 첫 글자는 대문자로 작성하는 것이 관례 Ex) ChatServer, ChatClient
- 첫 번째 글자에는 숫자가 올 수 없다.
- 자바 키워드와 $,_ 외의 특수 문자는 사용할 수 없다.
.java -> 클래스를 정의한 파일
Car.java -> Car를 모델링한 설계 파일 (Car 클래스를 만들면 Car.java가 만들어진다)
Car.class -> Car.java로 만들어진 바이트코드 (컴파일 후 생성되는 파일)
- 소스 파일 당 하나의 클래스를 선언하는 것이 관례이고 소스 파일 이름과 동일한 클래스만 public으로 선언 가능하다.
생성자
: 클래스 이름과 동일한 특별한 메소드
- 객체가 생성될 때 자동으로 한 번 호출되어 객체를 초기화하는데 필요한 코드를 담고 있다.
- 리턴타입이 없는 특별 메소드이다.
- new를 통해 객체를 생성할 때 반드시 호출된다.
- 클래스 내에서 하나 이상 선언되어야 하고 개발자가 작성 x -> 컴파일러가 자동으로 기본 생성자 삽입한다.
- 클래스 이름 = 생성자 이름
- 메소드 오버로딩으로 필요에 따라 여러 개의 생성자 작성이 가능하다.
- 개발자가 클래스에 생성자가 하나라도 작성한 경우, 기본 생성자가 자동으로 삽입되지 않는다.
- getter / setter : 접근제한자에 따른 값 설정/가져오기 메소드
this 레퍼런스
- 객체 자신의 참조를 위해 필요하다.(매개변수와 필드 이름이 같을 때 구분이 명확하다.)
- 객체의 치환은 레퍼런스(주소) 복사이다.
다형성 (Polymorphism)
- 같은 이름의 메소드가 클래스나 객체에 따라 다르게 동작하도록 구현한다.
- 메소드 오버로딩 vs 오버라이딩
- 오버로딩
Ex) void println()
void println(boolean x)
void println(float x) ... 등 매개변수의 개수나 타입이 다르지만 이름이 같은 메소드를 로딩하는 것
<리턴 타입은 오버로딩과 관련 x>
- 오버라이딩
Ex) Animal 클래스를 상속받은 Dog, Cat, Duck 클래스가 있다. 이 때 Animal 클래스의 기능인 소리내기()를 실행하면 Dog 클래스에서는 멍멍, Cat 클래스에서는 야옹, Duck 클래스에서는 꽥꽥 이 나온다. 이처럼 슈퍼 클래스에서 상속받은 메소드를 서브 클래스마다 다르게 구현하는 것을 오버라이딩이라고 한다.