겉바속촉
클래스와 인스턴스 본문
안녕하세요~ 겉바속촉입니다!^^!
이번에는 클래스와 인스턴스에 대해서 알아볼게요
보통 붕어빵을 가지고와서 비유를 하는데요
클래스 : 붕어빵 틀
인스턴스변수 : 붕어빵
이라고 많이 빗대어 말합니다:)
우선 클래스로부터 객체를 만드는 과정이 바로 인스턴스화이며
그렇게 만들어진 객체를 인스턴스(객체)라고 합니다.
다음은 생성자에 대한 설명이에요:)
아직은 개념설명만으로는 부족합니다!!
그래서 직접 코드를 작성해보고 컴파일해보면서 연습해볼까요??
다음 장면을 보시면 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();
}
}
'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 |