[JAVA] 클래스와 객체
클래스(class)
객체(사물, 실체)를 정의하는 설계도,
붕어빵 틀, 레시피로 비유된다.
객체, 인스턴스
객체(object): 실체
인스턴스(instance): 클래스와 객체의 관계
클래스로부터 객체를 선언(인스턴스화)
어떤 객체는 어떤 클래스의 인스턴스
-클래스 사용:
객체 변수와 메소드로 이루어짐
ex.
public class 클래스명{
//객체 변수
//메소드
//+접근제어자
//+static
}
클래스명 객체명 = new 클래스명();
-생성자(constructor):
객체가 생성될 때 자동으로 호출됨.
-생성자 규칙:
클래스명과 이름 맞추기
리턴 타입 없음
public class 클래스명{
클래스명(){} // <- 생성자
}
-this, this():
객체 자신을 의미하고 this()은 생성자이다..!!
객체에 대한 참조값.
그렇기에 객체가 생성되기 전에는 this 사용이 안된다.
static영역에서는 this 사용불가!
class Animal{
String name;
Double weight;
String classification;
Animal(String name,Double weight, String classification) {
this.name = name;
this.weight = weight;
this.classification = classification; //값을 할당해준다라고 함.
}
ㄴclass Animal 의 변수와 생성자 parameter 를 구분하기 위해 this를 사용한다.
this() 는 아래와 같이 사용한다.
Animal(){
this("Tan",5.0,"cat");
}
오버로딩(overloading)
한 클래스 내에서 같은 이름의 메소드를 여러 개 정의
조건:
- 메소드의 이름이 같아야 함
- 매개변수의 개수 또는 타입이 달라야 함(리턴 타입의 차이론 x)
ex.
public class 클래스명{
클래스명(){} // 생성자
클래스명(String name, String type){
구현 내용;}
}
접근제어자
클래스의 변수나 메소드의 접근에 제한을 두는 키워드
* 접근제어자 종류:
- private: 해당 클래스에서만 접근 가능
-public: 어디서든 접근 가능
-default: 해당 패키지 내에서만 접근 가능
-protected: 해당 패키지 및 상속받은 클래스에서 접근 가능
static
변수나 메소드의 특성을 바꾸는 키워드
*static 특징:
-메모리에 한번만 할당됨 ...> 즉, static 변수나 메소드는 공유되는 특성을 가짐
*static 클래스 변수:
해당 클래스의 각 객체들이 값을 공유
*static 클래스 메소드:
객체를 생성하지 않아도 호출가능