[JAVA 객체지향] | 1. 클래스와 객체

0

Q1. 클래스

  • 정의 : 객체를 정의해 놓은 것
  • 용도 : 객체를 생성하는 데 사용

TV 👉 클래스 👉 class TV {

속성 | 크기, 길이, 높이, 색상, 볼륨, 채널 ...
 👇
변수
 👇
String color;
boolean power;
int channel;

기능 | 켜기, 끄기, 볼륨 높이기, 채널 변경하기 ...
 👇
메서드
 👇
 void power() { power = !power; }
 void channelUp() { channel++; }
 void channelDown() { channel--; }

}

이것이 클래스생성

class TV {
  String color;
  boolean power;
  int channel;
  
  void power() { power = !power; }
  void channelUp() { channel++; }
  void channelDown() { channel--; }
}






Q2. 객체

  • 객체 = 속성(변수) + 기능(메서드)
  • 속성은 변수로, 기능은 메서드로 구현.






Q4. 객체 vs 인스턴스

  • 객체 ≒ 인스턴스
    (둘 다 같은 말이라고 봐도 된다.)
  • 객체 : 모든 인스턴스를 대표하는 일반적 용어
  • 인스턴스 : 특정 클래스로 부터 생성된 객체





Q5. 인스턴스화

     클래스
       👇   TV t = new TV( ); 이것이 인스턴스화
      객체


class명 참조변수명 = new 생성자;
class명 참조변수명 👉 ① 참조변수를 만들고
new 생성자 👉 ② 객체를 만들고 (new 연산자가 객체를 만들고, 그 객체의 주소를 알려준다.)
= 👉 ③ 참조변수와 객체를 연결해준다.

Tv t = new Tv();
Tv t 👉 ① Tv클래스 타입의 참조변수 t를 선언
new Tv(); 👉 ② 객체를 만들었다.
t = new Tv(); 👉 ③ 객체의 주소값이 참조변수 t에 대입된다.


❗❗❗참조변수 t는 객체가 아니고, 메모리에 생성된 객체를 가리키는 주소값을 가지고 있을 뿐이다. 아래 사진에 메모리에 만들어진 것이 객체이다. 객체에는 클래스가 설계된대로 변수와 메소드가 만들어진다. ❗❗❗







객체를 사용하려면 꼭 참조변수를 만들고 대입연산자를 통해 객체와 연결시켜줘야 한다.





Q6. 객체를 사용한다?

  • 객체를 사용한다는 것은 객체가 가지고 있는 변수와 메소드를 사용한다는 것이다.

이것이 객체사용

참조변수.변수;
 . 👉 "참조변수가 가리키는 객체의"
👉 참조변수가 가리키는 객체의 변수를 사용하겠다.

참조변수.메소드( );
 . 👉 "참조변수가 가리키는 객체의"
👉 참조변수가 가리키는 객체의 메소드를 사용하겠다.

t.channel = 7;
 . 👉 참조변수 t가 가리키는 객체 Tv()의
👉 변수 channel을 사용하겠다.

t.channelDown( );
 . 👉 참조변수 t가 가리키는 객체 Tv()의
👉 메소드 channelDown( )을 사용하겠다.

t.channel = 7;
System.out.printf("현재 채널은 %d번 입니다.",t.channel);

t.channelDown();
System.out.printf<("현재 채널은 %d번 입니다.",t.channel);

( t가 가리키고 있는 객체가 사용할 수 있는
변수는 color, power, channel이 있고,
메소드는 power(), channelUp(), channelDown()이 있다. )

꼭 참조변수를 통해서만 객체의 변수와 메소드를 사용할 수 있다.

콘솔 창 결과

현재 채널은 7번 입니다.
현재 채널은 6번 입니다.

Q7. 하나의 인스턴스를 여러개의 참조변수가 가리킬 수 있다!



  • 참조변수 tv1이 가리키는 객체의 주소값이 참조변수 tv2에 대입된다.
  • 0x200 객체를 가리키는 참조변수가 없으니 이 객체는 더 이상 사용불가
  • JVM의 Garbage Collector가 주기적으로 메모리를 확인하고 있다가 사용할 수 없는 객체들을 제거한다.

  • 하나의 인스턴스를 여러 개의 참조변수가 가리킬 수 있다.
  • 여러 인스턴스를 하나의 참조변수가 가리킬 수 없다.
    (변수는 하나의 값만 저장할 수 있기 때문이다.)













[자바의 정석 - 기초편] ch6-2~4 클래스와객체

profile
몇 번을 넘어져도 앞으로 계속 나아가자

0개의 댓글