JA V A W. 07 Sb.L
멤버 변수 클래스에서 속성을 나타내는 변수 객체변수, 클래스 변수 와 종단(final)변수로 나누어진다. Public/private 접근한정자 Static 클래스 변수 Final 종단 변수 <static과 final이 붙지 않은 변수는 모두 객체 변수이다.> [public/private] [static/final] 변수타입 변수명; 형식
객체변수 객체가 가질 수 있는 특성 변수가 가지는 값이 기본 자료형의 값인지, 아니면 참조 자료 형의 값인지에 따라 다른 특성을 가지게 된다. ............ int my_count1 = 100; int my_count2 = my_count1; Box mybox1 = new Box(); Box mybox2 = mybox1; My_count1의 값이 복사되어 my_count2의 값으로 전달 이 변수는 그 객체의 주소를 가지고 있다. 따라서 참조 자료형을 가지는 객체변수를 다른 객체 변수에 배정하면 그 객체의 주소를 넘겨주게 되어 결국 같은 객체를 가르키게 된다. Mybox1 객체의 속성값이 변환되면 mybox2 객체의 값도 변환되게 되며, 반대의 경우도 마찬가지이다.
객체변수
클래스 변수 - static을 사용하여 선언 - 전역변수(global variable)의 개념 형식 static long boxid; static double degree; 객체변수는 그 클래스로부터 객체가 생성될 때마다 각 객체에 변수들이 생성되지만, 클래스 변수는 그 클래스로부터 생성된 모든 객체들이 하나의 클래스 변수를 공유한다. 즉 클래스 변수는 하나의 클래스로부터 생성된 객체들 사이의 통신이나 객체들 사이의 공통되는 속성을 표현하는데 사용될 수 있다.
클래스 변수
연산자와 수식 연산자 사용법 설명 비고 + op1+op2 op1과 op2를 더한다. 단항 및 이항 - op-op2 * op1*op2 op1과 op2를 곱한다. 이항 / op1/op2 op1을 op2로 나눈다. % op1%op2 op1을 op2로 나눈 나머지를 구한다. ++ var++ ++var var 값 1 증가. var 값을 증가시키기 전에 평가 var 값 1 증가. var 값을 증가시킨 다음 평가 단항 - - var— --var var 값 1 감소. var 값을 감소시키기 전에 평가 var 값 1 감소. var 값을 감소시킨 다음 평가
산술연산자 예제 <결과>
속성만 가지는 클래스 class Box { int width; int height; int depth; } 형식
종단변수 final int MAX =100; final int MIN = 1; 그 이후에는 그 값을 변경할 수 없다. final 변수형 = 변숫값; 형식 final int MAX =100; final int MIN = 1;
멤버 변수 접근 방법 - 클래스 변수와 객체 변수에 접근하기 위해서는 “.”을 이용하여 접근할 수 있다. - 객체 변수에 접근하기 위해서는 객체 이름만을 이용하여야 한다. 클래스이름.클래스변수 or 객체이름.클래스변수 형식
멤버 변수 접근 방법 객체이름.객체변수 형식 <결과>
멤버 변수 접근 한정자(Public) Public 클래스 내의 멤버 변수 접근을 제한할 수 있는 방법으로 접근 한정자를 제공 - 캡슐화(Encapsulation)와 정보 은폐(Information hiding) Public 선언된 객체 변수는 항상 접근 가능 class Box3 { public int width; public int height; public int depth; public long idNum; static long boxID = 0; public void increment() { idNum = ++boxID; } .................. Box3 mybox1 = new Box3(); mybox1.width = 7; mybox2.depth = 20; ............... 14
멤버 변수 접근 한정자(Private) Private private로 선언된 객체 변수는 소속된 클래스 내에서만 사용 가능 class Box3 { private int width; private int height; private int depth; private long idNum; static long boxID = 0; public void increment() { idNum = ++boxID; } .................. Box3 mybox1 = new Box3(); mybox1.width = 7; mybox2.depth = 20; ............... 오류 발생 15
한정자를 지정하지 않을 경우 같은 패키지에 속한 클래스에서는 제한 없이 사용이 가능 멤버 변수 접근 한정자 객체 변수에 한정자를 사용하지 않고 사용하는 경우가 종종 있음. 가능하면 변수의 성격에 따라 한정자를 지정하는 것이 좋음. 자바는 한정자를 지정하지 않고 객체 변수를 사용하는 것을 허용. 한정자를 지정하지 않을 경우 같은 패키지에 속한 클래스에서는 제한 없이 사용이 가능 16
<유효 측면에서의 변수들을 구분> 변수의 유효범위(Scope) - 그 변수가 사용될 수 있는 영역 멤버의 변수 메소드 매개변수와 지역변수 예외 처리기 매개변수 (exception handler parameter) <유효 측면에서의 변수들을 구분> <멤버 변수> 클래스 내의 메소드 밖에서 선언된 변수 (모든 멤버 변수들은 그 클래스 전체에서 유효) 메소드 지역변수와 메소드 매개변수는 메소드 내에서만 사용할 수 있는 변수 17
감 사 합 니 다 Sb.L