본문 바로가기

카테고리 없음

[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 클래스 메소드:

객체를 생성하지 않아도 호출가능