이전 포스팅에서 클래스 변수와 인스턴스의 정의에 대해 알아보았다.
2019/04/19 - [자바/기본] - 인스턴스 변수와 클래스 변수
이제 소스를 통해 각각을 비교해 보자
package test;
public class MainClass {
public static void main(String[] args) {
System.out.println("카드의 높이 : " + CreadCard.height);
System.out.println("카드의 넓이 : " + CreadCard.width);
System.out.println();
CreadCard card1 = new CreadCard();
CreadCard card2 = new CreadCard();
card1.num = "1111-AAAA";
card1.owner = "kim";
card2.num = "2222-BBBB";
card2.owner = "choi";
System.out.println("1번 카드의 정보 - " + card1.toString());
System.out.println("2번 카드의 정보 - " + card2.toString());
System.out.println("\n1번카드의 정보를 변경한다.");
card1.num = "3333-CCCC";
card1.owner = "lee";
card1.height = 8;
card1.width = 20;
System.out.println("1번 카드의 정보 - " + card1.toString());
System.out.println("2번 카드의 정보 - " + card2.toString());
}
}
class CreadCard {
String num;
String owner;
static int height = 5;
static int width = 10;
public String toString() {
String res = "카드 높이:" + this.height + " 카드 넓이:" + this.width
+ " 소유자:" + this.owner + " 카드번호:" + this.num;
return res;
}
}
위의 소스는 신용카드를 객체로 만든 소스이다.
카드는 모두 공통 값인 높이와 넓이 값을 가지고 으며(height, width)
카드가 발급될 때마다 지정되는 사용자와 카드 번호를 가진다 (owner, num)
위 소스의 실행 결과는 아래와 같다.
카드의 높이 : 5 카드의 넓이 : 10 1번 카드의 정보 - 카드 높이:5 카드 넓이:10 소유자:kim 카드번호:1111-AAAA 2번 카드의 정보 - 카드 높이:5 카드 넓이:10 소유자:choi 카드번호:2222-BBBB 1번 카드의 정보를 변경한다. 1번 카드의 정보 - 카드 높이:8 카드 넓이:20 소유자:lee 카드번호:3333-CCCC 2번 카드의 정보 - 카드 높이:8 카드 넓이:20 소유자:choi 카드번호:2222-BBBB |
card1과 card2를 생성한 후 각각의 정보를 출력한다.
그리고 1번 카드의 정보를 변경한 후 다시 1,2 카드의 정보를 출력하는 예제이다.
card1의 값을 변경할 때 owner와 num 변수는 인스턴스 변수이기 때문에 card1 인스턴스의 데이터에만 영향을 미친것을 볼 수 있다.
주의해서 볼 부분은 클래스 변수인 height와 width값이다.
static으로 선언되어 card1의 값을 변경하였는데도 card2의 데이터에도 영향을 주는 모습을 볼 수 있다.
또 다른 점은 CreaditCard의 객체를 생성하기 전에(new 키워드 선언 전에) '클래스이름. 변수이름'의 형태로 값에 접근이 가능하다는 점이다.
반응형
'Java & 스프링 > Java' 카테고리의 다른 글
[Java] 오버로딩, 오버라이딩 (0) | 2019.04.23 |
---|---|
[Java] JVM이란? (0) | 2019.04.20 |
[Java] 인스턴스 변수와 클래스 변수 (0) | 2019.04.19 |
자바의 기본형(변수 타입) (0) | 2019.04.18 |
Java의 특징과 JVM, JDK, JRE (0) | 2019.04.18 |
댓글