JAVA_19_클래스 정의 & cv, iv, lv

charl hi·2021년 8월 9일
1

JAVA

목록 보기
19/53

클래스의 정의

  1. 설계도
  2. 데이터 + 함수(구조체 + 함수)
  • 변수(데이터 하나) < 배열(같은 데이터 여러개) < 구조체(여러 데이터 여러개) < 클래스(구조체 + 메소드)
  1. 사용자 정의 타입
  • 원하는 타입을 직접 만든다.
  • 연관된 것들끼리 강하게 묶을 수 있음
  • 유지보수 up

선언위치에 따른 변수의 종류

1. 클래스 영역

1) ✔클래스 변수 cv (static 변수 / 공유 변수)

  • 클래스 안에 있는 static이 붙은 iv변수
  • 생성시기 : 클래스가 메모리(RAM)에 올라갈 때(객체 생성 전에)
  • 객체 생성 없이 아무때나 사용 가능
  • 공통 속성
  • 공유하기에 ✨객체 안에 없고다른 공간에 하나만 있다.

2) ✔인스턴스 변수 iv

  • 클래스 안에 있는 일반 변수
  • ✨생성시기 : 인스턴스/객체가 생성되었을 때
  • 개별 속성
    -> 이 iv를 묶어 놓은 게 객체라고 생각하면 된다.

2. 메소드 영역

✔지역 변수 lv

  • 메소드 안에 있는 변수

-> 👀 이 변수들은 선언만 가능하다 ??


-> 객체는 iv(인스턴스 변수)의 묶음이라고 이해하라.


클래스변수와 인스턴스변수의 사용법


class Card {
    String kind;  //무늬
    int number;  //숫자
    
    static int width = 100;  //폭
    static int height = 250;  //높이
}

public class Main {

	public static void main(String[] args) {
    
	Card c = new Card();  	//객체 생성
	c.kind = "heart";
        c.number = 5;
        
        Card.width = 200;	//cv를 사용할 땐 클래스명!
        Card.height = 250;
        
 	}       
}

인스턴스 변수 사용

객체명.변수명 = 대입할것;

c.kind = "heart";
c.number = 5;

클래스 변수 사용

클래스명.변수명 = 대입할것;

Card.width = 200;
Card.height = 250;
  • 인스턴스 변수랑 똑같이 쓸 수 있으나 오해하기 쉽다.

package ch06.c1;

class Card {
	String kind;
	int number;
	
	static int width = 100;
	static int height = 250;
}


public class Ex6_3 {

	public static void main(String[] args) {
		// 카드
		
		System.out.println("Card.width = "+Card.width);
		System.out.println("Card.width = "+Card.height);
        //***** cv는 객체 생성 없이도 바로 사용할 수 있다!!!
		
		Card c1 = new Card();
		c1.kind = "heart";
		c1.number = 7;
		
		Card c2 = new Card();
		c2.kind = "spade";
		c2.number = 4;
		
		System.out.println("c1은 "+c1.kind+", "+c1.number+"이고, 크기는 "+Card.width+", "+Card.height+"입니다.");
		System.out.println("c2는 "+c2.kind+", "+c2.number+"이고, 크기는 "+Card.width+", "+Card.height+"입니다.");
		System.out.println("c1의 width와 height를 각각 50, 80으로 변경합니다.");
		
		Card.width = 50;	//cv 이렇게 사용!!
		Card.width = 80;
		
		System.out.println("c1은 "+c1.kind+", "+c1.number+"이고, 크기는 "+Card.width+", "+Card.height+"입니다.");
		System.out.println("c2는 "+c2.kind+", "+c2.number+"이고, 크기는 "+Card.width+", "+Card.height+"입니다.");
		
	}

}

Card.width = 100
Card.width = 250
c1은 heart, 7이고, 크기는 100, 250입니다.
c2는 spade, 4이고, 크기는 100, 250입니다.
c1의 width와 height를 각각 50, 80으로 변경합니다.
c1은 heart, 7이고, 크기는 80, 250입니다.
c2는 spade, 4이고, 크기는 80, 250입니다.




Ref

0개의 댓글

관련 채용 정보