🌻 객체
클래스와 객체
- 클래스: 객체를 정의해 놓은 것, 객체를 생성하는데 사용
- 객체: 실제로 존재하는 것(사물 또는 개념), 객체의 속성과 기능에 따라 용도가 다름
- 속성과 기능으로 이루어져 있음
- 속성은 변수로 기능은 메서드로 정의
생성자
- 인스턴스가 생성될 때 호출되는 인스턴스 초기화 메서드
- 인스턴스 변수의 촉화 또는 인스턴스 생성시 수행할 작업에 이용
- 몇가지 조건 제외하고 메서드와 같음
- 모든 클래스에는 반드시 하나의 생성자 필요(없으면 default생성자가 알아서 만들어지고 생략됨)
- 생성자 이름이 클래스이름과 같아야 하며 리턴값이 없다(근데 void안씀)
- 오버로딩도 가능
- 상수(final)의 초기화도 가능 이후수정안됨
클래스명(타입 면수명,...){
}
public class Card {
String kind;
int number;
Card(String kind, int number){
this.kind=kind;
this.number=number;
}
Card(){
this("spade",1);
}
static int width=100;
static int height=250;
static void play() {
System.out.println("카드놀이를 합니다");
}
}
this()
- 생성자에서 다른 생성자 호출하기
- 같은 클래스의 다른 생성자를 호출할 때 사용
- 다른 생성자 호출은 생성자의 첫 문장에서만 가능
- 인스턴스 자신을 가리키는 참조변수
- 인스턴스의 주소가 저장되어있음
- 모든 인스턴스 메서드에 지역변수로 숨겨진 채로 존재
클래스 메서드(static method)와 인스턴스 메서드
- 인스턴스 메서드
- 인스턴스 생성 후, ‘참조변수.메서드이름()’으로 호출
- 인스턴스 변수나 인스턴스 메서드와 관련된 작업을 하는 메서드
- 메서드 내에서 인스턴스 변수 사용가능
- static멤버들은 공유하고있기 때문에 인스턴스 멤버 참조안됨
- 클래스 메서드
- 객체 생성없이 ‘클래스이름.메서드이름()’으로 호출
- 인스턴스 변수나 인스턴스 메서드와 관련 없는 작업을 하는 메서드
- 메서드 내에서 인스턴스 변수 사용불가(static멤버들은 공유하고있기 때문에 인스턴스 멤버 참조안됨→ 같은 맥락)
- 메서드 내에서 인스턴스 변수를 사용하지 않는다면 static을 붙이는 것을 고려한다.
*클래스로 새로운 데이터 타입 생성