본문 바로가기
Spec UP - Backend/나도코딩의 자바기본편

Chap_07. 클래스 변수와 메소드

by TIS_Ha 2023. 4. 20.
반응형

이전시간에 학습한 BlackBox 클래스를 활용하여 클래스 변수에 대하여 이해해보자.

BlackBox 클래스에는 4개의 인스턴스 변수(modelName, resolution, price, color)와 클래스 변수 1개(canAutoReport)가 선언되었다.

인스턴스 변수는 변수 앞에 static이 없으며, 각 객체들마다 서로 다른 값을 가질 수 있다.

클래스 변수는 변수 앞에 static이 함께 정의되며, 클래스로부터 만들어지는 모든 객체에 똑같이 적용된다.

객체 b1, b2 에서 canAutoReport 값 확인 시 모두 false로 동일하게 출력된다.

위 사유로 가급적 클래스 변수를 호출할때에는 클래스명을 이용해 접근한다.

Ex) b1.canAutoReport 보다는 BlackBox.canAutoReport로 호출한다.

클래스 변수 BlackBox.canAutoReport 값을 수정 하면 전체 객체의 값이 변경된다.

b1.canAutoReport : 개발전) false -> 개발후 ) true

b2.canAutoReport : 개발전) false -> 개발후 ) true

 

전체 객체에 대하여 값 적용이 필요한 경우에는 인스턴스 변수가 아닌 클래스 변수를 선언하는 것이 좋다.

 


 

이번에는 클래스에 메소드를 선언하여 객체에서 클래스 메소드를 호출하는 방법을 학습해보자.

이전에 학습한 BlackBox 클래스의 자동신고기능을 통해 살펴보자.

BlackBox 클래스 내에 autoReport()라는 메소드를 추가로 생성하였다.

autoReport() 메소드를 실행하면 canAutoReport 의 Boolean 값에 따라 

"충돌이 감지되어 자동으로 신고합니다" or "자동 신고기능이 지원되지않습니다"를 출력하도록 설계하였다.

 

이제 _04_Method라는 클래스를 생성하여 BlackBox객체를 생성 후 아래와 같이 테스트해보자.

BlackBox 클래스에서 b1 객체를 생성하고 autoReport() 메소드를 호출하였다. // b1.autoReport();

개발 전 -> "자동 신고기능이 지원되지않습니다" 출력

개발 후 -> "충돌이 감지되어 자동으로 신고합니다" 출력

해당 메소드를 실행하면 위와 같이 출력되는 것을 확인할 수 있다.

 


이번에는 BlackBox 클래스 내에 inserMemoryCard()라는 전달값을 받는 메소드를 생성하고 동일하게 확인해보자.

위와 같이 BlackBox 클래스 내 insertMemoryCard(int capacity) { } 메소드를 선언하였다.

_04_Method 클래스 내 b1 객체를 생성하고 insertMemoryCard(255) 메소드를 호출하면

아래와 같이 capacity 256 전달값을 받아 "메모리카드가 삽입되었습니다. 용량은 256입니다."로 출력되는 것을 확인할 수 있다.


이번에는 BlackBox 클래스 내에 전달값과 반환값이 있는 메소드를 생성해보자.

위와 같이 BlackBox 클래스 내 getVideoFileCount(int type) 메소드를 선언하였다. //전달값 : type

 - 일반영상인 경우 type 값은 1로, 충돌이 감지된 이벤트 영상의 경우 type 값이 2로 분류되어 있다.

 - type 1 이면 return 9를 반환하고 type 2 이면 return 1을 반환한다.

 

_04_Method 클래스 내 b1 객체를 생성하고 전달값 type 1, type 2 를 각각 아래와 같이 호출하면

"일반 영상 파일 수 : 9개 " , "이벤트 영상 파일 수 : 1개" 가 출력되는 것을 확인할 수 있다.

반응형

댓글