겉바속촉

클래스와 인스턴스 본문

IT일기(하반기)/블록체인

클래스와 인스턴스

겉바속촉 2020. 6. 1. 09:58
728x90
반응형

안녕하세요~ 겉바속촉입니다!^^!

이번에는 클래스와 인스턴스에 대해서 알아볼게요

 

보통 붕어빵을 가지고와서 비유를 하는데요

클래스 : 붕어빵 틀

인스턴스변수 : 붕어빵

이라고 많이 빗대어 말합니다:)

 

우선 클래스로부터 객체를 만드는 과정이 바로 인스턴스화이며

그렇게 만들어진 객체를 인스턴스(객체)라고 합니다.

 

다음은 생성자에 대한 설명이에요:)

 

아직은 개념설명만으로는 부족합니다!!

그래서 직접 코드를 작성해보고 컴파일해보면서 연습해볼까요??

 

다음 장면을 보시면 class를 두개 만들었습니다.

public class는 우리가 늘 봐오던 class죠:)

그 위에 class를 하나 더 작성한 것입니다

 

 

 

그 곳에 각각 인스턴스 변수와 클래스 변수를 작성해볼게요:)

1. 인스턴스 변수 --> 각 인스턴스의 개별적인 저장공간

2. 클래스 변수 --> static변수 / 클래스가 로딩될 때 생성, 종료될 때 소멸

 

 

package day0601;


class Card{
	
	//1.인스턴스변수
	//각 인스턴스의 개별적인 저장공간, 각각 다른 값에 저장가능
	//참조변수명. 으로 접근가능
	String kind; //카드의 무늬
	int number; //카드의 숫자
	
	//2.클래스변수-->static변수
	//모든인스턴스들이 공유-->클래스가 로딩될때 생성, 종료될때 소멸
	//접근-->클래스명.변수명으로 접근가능
	static int width; //카드의 너비
	static int height; //카드의 높이
	
}
////////////////////////////
public class CardTest_01 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		
		Card.width = 50;
		Card.height = 80;
		
		//클래스가 로딩될때 클래스변수명 바로로딩
		System.out.println(Card.width);
		System.out.println(Card.height);
        
        
		//인스턴스 변수 생성
		Card c1 = new Card();
		System.out.println(c1.kind);
		System.out.println(c1.number);
		

	}

}

현재 값이 지정되지 않아서 c1.kind랑 c1.number가 null값이랑 0이 나오는 거에요:)

그렇다면 값을 넣어봅시다:)

그리고 출력되는 것도 문장으로 만들어볼게요!!

 

 

package day0601;

import javax.swing.plaf.synth.SynthOptionPaneUI;

class Card{
	
	//1.인스턴스변수
	//각 인스턴스의 개별적인 저장공간, 각각 다른 값에 저장가능
	//참조변수명. 으로 접근가능
	String kind; //카드의 무늬
	int number; //카드의 숫자
	
	//2.클래스변수-->static변수
	//모든인스턴스들이 공유-->클래스가 로딩될때 생성, 종료될때 소멸
	//접근-->클래스명.변수명으로 접근가능
	static int width; //카드의 너비
	static int height; //카드의 높이
	
}
////////////////////////////
public class CardTest_01 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		
		Card.width = 50;
		Card.height = 80;
		
		//클래스가 로딩될때 클래스변수명 바로로딩
		System.out.println(Card.width);
		System.out.println(Card.height);
		
		//인스턴스 변수 생성
		Card c1 = new Card();
		System.out.println(c1.kind);
		System.out.println(c1.number);
		c1.kind = "heart";
		c1.number = 7;
		
		Card c2 = new Card();
		c2.kind = "spade";
		c2.number = 10;
		
		//출력
		System.out.println(c1.kind + "," + c1.number + "," + Card.width+","+ Card.height);
	
		System.out.println(c2.kind + "," + c2.number + "," + Card.width+","+ Card.height);


	}

}

컴파일 하셨을 때 다음과 같은 콘솔창이 나오셨다면

성공!^^!

 

 

이번에는 static을 사용하는 것에 대해 알아볼게요:)

 

생성자는 객체를 생성할 때마다 실행되는 데요.

아래 코드를 보시면서 설명을 읽어주세요:)

 

이렇게 객체를 생성했습니다.

Counter_02 cot1 = new Counter_02();
Counter_02 cot2 = new Counter_02();

 

그럼 이렇게 객체가 생성될때마다

count++;

system.out.println(count);가 실행되는 것이죠

package day0601;

public class Counter_02 {
	
	//인스턴스 변수는 서로 다른 메모리를 가지고 있기때문에 카운트 증가하지않는다
	//인스턴스에 공통적으로 사용하는 것에 static을 붙힌다.
	static int count = 0;
	
	//생성자
	public Counter_02() {
		count++;
		System.out.println(count);
	}
	
	public static void main(String[] args) {
		
		Counter_02 cot1 = new Counter_02();
		Counter_02 cot2 = new Counter_02();
		
	}

}

 

 

728x90
반응형

'IT일기(하반기) > 블록체인' 카테고리의 다른 글

class 호출하기  (0) 2020.06.01
클래스 연습하기  (0) 2020.06.01
2차원 배열  (0) 2020.05.29
temp순서바꾸기  (0) 2020.05.29
Array로 search연습하기  (0) 2020.05.29