클래스

sim·2023년 3월 8일

자바의 정석

목록 보기
15/20
  1. 클래스의 정의
  • 클래스 :
    1) 설계도
    2) 데이터+함수
    3) 사용자 정의 타입

    2)데이터+함수

  • 변수 : 하나의 데이터를 저장할 수 있는 공간

  • 배열 : 같은 종류의 여러 데이터를 하나로 저장할 수 있는 공간

  • 구조체(structure) : 서로 관련된 여러 데이터(종류 관계X)를 하나로 저장할 수 있는 공간

  • 클래스 : 데이터와 함수의 결합 (구조체+함수)

    3)사용자 정의 타입(user-defined type)

  • 서로 관련된 변수들을 묶어서 하나의 타입으로 새로 추가하는 것

  • 원하는 타입을 직접 만들 수 있다.

ex.

int hour; //시간
int minute; //분
int second; //초 

--> 이걸 클래스로 표현, 정의 -> 객체지향

class Time {
	int hour;
    int minute; 
    int second; 
}

Time t = new Time(); //이렇게 하나의 객체를 생성함. 훨씬 간단!

Time t1 = new Time();
Time t2 = new Time(); 
Time t3 = new Time(); 

// 아예 배열해서 변수 선언 가능

Time[] t = new Time[3]; 
t[0] = new Time(); 
t[1] = new Time();
t[2] = new Time(); 

** 시, 분, 초는 모두 0보다 크거나 같아야 한다. & 시의 범위는 0~23, 분과 초의 범위는 0~59이다.

public class Time {
	private int hour; 
    private int minute;
    private int second;
    
    //hour의 값을 변경하기 위한 메서드. 지정한 값이 0보다 작거나 23보다 크면 메서드 종료한다. 
    public void setHour(int h) {
    	if (h<0 || h>23) return;
        hour = h; 
    }
}
  1. 선언위치에 따른 변수의 종류
    ex.

    {	// **클래스영역**
    	int iv; //인스턴스 변수
        static int cv; //클래스 변수 (static변수, 공유변수)
        
        void method()
        {	// **메서드 영역**
        	int lv = 0; //지역변수 
        }
    }
  • 클래스 영역 : 선언문만 가능/ 순서 상관X => cv, iv
  • 메서드 영역 : => lv

1) 클래스 변수(class variable) : iv 앞에 static 붙이기만 하면 됨. / 클래스가 메모리에 올라갈 때 생성 -> 객체 생성 안해도 됨. 언제라도 바로 사용할 수 있다는 특징. / '클래스이름.클래스 변수' 형식
2) 인스턴스 변수(instance variable) :인스턴스가 생성되었을 때 생성/ 객체= iv를 묶어놓은 것. 외우세염~
3) 지역 변수 (local variable) : 변수 선언문이 수행되었을 때

3.클래스 변수와 인스턴스 변수

  • 개체의 속성 중 개별 속성 -> 인스턴스 변수(iv)
    / 공통 속성 -> 클래스 변수 (cv) --> 모든 인스턴스가 하나의 저장공간을 공유하므로, 항상 공통된 값을 가짐. - 변경하면 모든 클래스 변수가 바뀌는 것임.
profile
sim

0개의 댓글