본문 바로가기
이론/Data Structure , Algorithm

[210614] 자바 문제 리딩, 객체와 은닉화

by 6161990 2021. 6. 14.

Card 클래스 

 

 

 Card의 중요 데이터(멤버필드)로 Card 값을 문자열 타입으로 선언한다. 

접근 제한자를 private으로 선언하여 데이터를 보호한다.

 

9-11  Card 값을 외부로 반환하는 메소드를 선언한다.

 

14 -17  Card("H2")를 호출한다. 다른 생성자를 호출하면서 

중요 데이터인 멤버필드를 H2로 초기화한다.

 

19-22  Card 값을 입력받는 생성자를 선언한다. 

이미 존재하는 생성자에 대해 아규먼트 개수나 타입이 다른 생성자 오버로딩

 

24-28   Card 생성자에 아규먼트로 카드 객체를 받는 '복사 생성자' .

입력받은 다른 Card 의 값만 받아 카드값을 초기화한다. 

값은 같지만 다른 객체를 만들 때 사용한다.

 

 

30-34  toString () 오버라이딩 해, 레퍼런스 변수로 출력가능하게 한다.

 

 


 

Main 클래스

 

 

6-7  카드 그림을 나타내는 suit("H")와 값을 나타내는 valu(6), valu(3)을 선언한다.

 

9-13  "Card 레퍼런스변수 = new Card()" 형태로 객체를 생성한다. 

 앞의 Card 는 class, 뒤의 Card 는 힙 메모리에 생성된 객체이며 Card 타입의 객체를 생성 한다는 의미다.

각체를 생성할 때 () 안에 아규먼트를 전달해 값을 초기화한다.

 

12   기본 생성자("H2")로 카드 생성

Card c3 = new Card();

객체 생성시 인자 전달 없으면,

 Card 클래스에서 설정한 기본 생성자 값으로 자동 초기화된다.

 

16   모든 객체는 값이 같더라도 hashcode가 다르기 때문에 false
 new 키워드는 해시코드와 레퍼런스를 모두 다르게 만든다. 

 

17   c1과 c2의 카드 값은 "H6"이므로 true