공부노트/Java

[Java] Class와 객체

Reload0213 2021. 11. 10. 23:41

클래스

public class Car {
    String color = "빨간색";
    int fuel = 85;

    public void putAccel(){
        System.out.println("차가 나아갑니다.");
    }
    public void putBreak(){
        System.out.println("차가 멈춥니다.");
    }
}

- 객체를 생성하기 위한 틀이라고 볼 수 있다.
- 클래스를 활용하여 인스턴스(객체)를 생성할 수 있다.
- 클래스는 객체 그 자체가 아니며 단순히 객체를 생성하기 위한 틀에 불과하다.
- 클래스에서는 실제 속성을 나타내는 멤버변수(필드)동작을 나타내는 메서로 구성을 나눌 수 있다.
- 클래스는 해당 클래스를 감싸고 있는 파일과 이름이 동일해야 하며 1파일 = 1클래스로 구성되는 것을 원칙으로 한다.

 

객체 선언 방법

- 객체선언 타입 인스턴트명(변수명) = new생성자함수();

Car car1 = new Car();
        System.out.println(car1.color); // 빨간색
        System.out.println(car1.fuel);  // 85

        car1.putAccel(); // 차가 나아갑니다.
        car1.putBreak(); // 차가 멈춥니다.
}

field(필드)

 

- 클래스 내에서 선언되어지는 변수를 이야기함
- 보통 맴버변수라고 이야기를 하기도 함
- 클래스 내부에서 선언이 되어지며 모든 클래스 내의 메소드에서 접근해서 사용이 가능하다.
- field 값을 초기화 하지 않을 경우 해당 타입에 따라 다르게 초기화가 자동으로 이루어지는데
각 타입마다 자동화 되는 값은 다음과 같다.
=> int = 0;
=> float, double = 0.0;
=> char = 0x0000(NUL);
=> boolean = false;
=> String or Object = null;
※ 모든 참조형 변수는 예외없이 null로 초기화 된다.

 

메소드(Method)

 

- 메소드는 실제 클래스에서 기능을 정의하는 역할을 수행한다.
- 메소드의 형식은 접근제한자, 리턴타입, 메서드명(매개변수...) 순으로 정의가 가능하다.
- 메소드는 리턴타입과 매개변수에 따라 성질이 바뀌게 된다.
- 리턴타입이 없을 때는 메서드 명 앞에 void를 놓게 되며 안쪽에 반환하고자 하는 로직 구현을 하지 않아도 된다.
- 하지만 리턴타입을 명시할 경우 메소드명 앞에 void 대신 리턴할 타입을 선언하고 반드시 로직 안에 return이

존재해야 한다.
- 매개변수는 아무것도 선언하지 않아도 되며 선언할 경우 하나 이상의 매개변수 선언이 가능하다.
- 매개변수 선언 시 반드시 [변수 타입][변수 명] 식으로 선언을 해야 한다.
- 만약 내가 몇개의 데이터를 받을 지 알 수 없을 때에는 매개변수의 변수 명 앞에 ... 을 붙여 동적으로 데이터를

받을 수 있다.
=> 단 이럴 경우 동적으로 받는 데이터들의 타입이 동일해야 하며 이를 안지킬 경우 에러가 난다.

 

This

 

 

- 객체 나 자신을 가리킬 때 쓰는 예약어
- 같은 객체 내에서 존재하는 필드나 메서드를 사용할 경우 사용하는 키워드
- 클래스 내의 메서드에서 해당 클레스에 존재하는 다른 메서드 혹은 필드에 접근할 경우 this. 를 활용하여 접근이 가능하다.
- 단 클래스 내의 메서드에서 해당 필드나 메서드를 접근하기 위해 this.은 생략이 가능하다.
- this. 를 쓸 경우 강제적으로 내 클래스 안의 필드 혹은 메서드를 가르키는 효과가 있으므로 외부에서 받아온 매개변수의 이름이 필드의 이름과 같을 시 시작적으로 구분을 해줄 수 있다.
- 생성자를 접근할 경우 this.(생성자에서 선언한 매개변수) 를 활용하여 접근할 수 있다.
- 단 생성자에 접근할 경우 생성자 내에서만 접근이 가능하며 생성자는 다른 필드나 메서드의 접근 또한 가능하지만, 일반 메서드에서 생성자의 접근은 불가능하다.