클래스와 객체

JMS·2022년 1월 29일
0

Java

목록 보기
4/4
post-thumbnail

클래스란?

1.설계도

  • 객체를 정의해 놓은 것 (제품을 만들기 위한 설계도)
  • 객체를 생성해서 사용하기 위해 클래스를 생성한다

2. 데이터 + 함수

  • 구조체 : 서로 관련있는 여러 데이터(같은 종류 X)를 하나로 저장할 수 있는 공간
  • 클래스 : 서로 관련있는 여러 데이터와 함수의 결합 (구조체 +함수)

3. 사용자 정의 타입

  • 원하는 타입을 직접 만들 수 있다.
  • ex) 시간을 다루는 기본형타입이 존재하지 않음 → 클래스로 타입 정의
class Time{
	int hour;
	int minute;
	int second;
}
Time t = new Time();
t.hour = 12; // == int hour = 12;
t.minute = 34; // == int minute = 34;
t.second =56; // == int second = 56;

서로 연관된 값을 따로따로 변수에 저장하는것이 아닌 class에 연관된 데이터를 저장하고

객체를 생성해서 데이터를 입력하고 사용하는것이 객체지향적인 프로그래밍이다.

객체란?

  • 실제로 존재하는 것, 사물 또는 개념(제품)
  • 객체가 가지고 있는 기능과 속성을 사용하기 위해
  • 객체 = 속성(변수) + 기능(메서드)
//TV 설계도
class TV{
	String color; // 색깔 속성
    	boolean power; // 전원상태 속성
        int channel; //채널 속성
		
        void power() {// 전원 켜기,끄기 기능
        	power = !power;
            }
        void channelUp() {//채널 변경하기 기능
        	channel++;
            }
        void channelDown() {
        	channel--;
            }
 }

색깔, 전원상태, 채널이라는 속성전원켜기,끄기,채널 변경하기 기능을 가진 TV라는 제품을 만들기 위한 TV설계도

객체와 인스턴스

  • 객체 : 모든 인스턴스를 대표하는 일반적 용어
  • 인스턴스 : 특정 클래스로부터 생성된 객체(예: TV객체 = TV인스턴스)
  • 객체와 인스턴스는 같은 의미
  • 클래스로 객체(인스턴스)를 생성하는 것을 인스턴스화(제품생성)이라고 한다.

객체 생성/사용

객체 생성

TV t; // TV라는 설계도로 생성할 TV제품을 참조하기 위한 참조변수(리모컨)선언
t = new TV(); //참조변수(리모컨)에 만든 TV제품을 저장

객체 사용

TV t1 = new TV(); // 생성한 TV를 t1이라는 리모컨으로 사용하겠다
TV t2= new TV(); // 생성한 TV를 t2라는 리모컨으로 사용하겠다
t1.channel = 7; //t1이라는 리모컨으로 연결된 TV의 채널을 변경한다.
System.out.println("t1 의 channel 값 : " + t1.channel); //t1 의 channel 값 : 7 
System.out.println("t2 의 channel 값 : " + t2.channel); //t2 의 channel 값 : 0

똑같은 channel이라는 변수명을 가지지만 각각 다른 리모컨과 연결되있기 때문에 서로다른 변수이다.

하나의 인스턴스를 여러 개의 참조변수가 가리키는경우

TV t1 = new TV();
TV t2= new TV();
t1 = t2; // t2에 연결된 TV를 t1리모컨과 연결한다.
t1.channel = 7; //t1의 리모컨으로 t1의 채널을 변경한다.
System.out.println("t1 의 channel 값 : " + t1.channel); //t1 의 channel 값 : 7 
System.out.println("t2 의 channel 값 : " + t2.channel); //t2 의 channel 값 : 7

t1,t2라는 2개의 리모컨으로 한개의 TV와 연결하여 사용 가능하다.

이때 원래 t2에 저장돼있던 객체는 사용불가 상태가 되어 가비지컬렉션(GC)에 의해 메모리에서 삭제되어 사용불가하다

객체 배열

  • 객체 배열 == 참조변수배열
// 객체를 생성해 각각의 참조변수에 저장
TV t1 = new TV();
TV t2 = new TV();
TV t3 = new TV();

TV[] tvArr = new TV[3]; // TV타입의 길이가 3인 배열 생성

//tvArr배열 각 인덱스에 참조변수를 저장하면 참조변수배열이 된다.
tvArr[0] = t1;
tvArr[1] = t2;
tvArr[2] = t3;, 참조변수에 객체가 저장되있으므로 참조변수배열 == 객체배열이다
profile
비 전공 ZEROBASE 개발 꿈나무

0개의 댓글

관련 채용 정보