일련번호를 부여하는 Id 클래스 생성
- class Id를 생성. Id 인스턴스를 생성할 때마다 int형 변수 number이 증가.
- String형 변수: nickname, password, phoneNumber
- nickname과 phoneNumber, idNumber값을 가져오는 게터getter 메서드 생성.
- 단, number 필드와 그것의 게터getter는 static으로 설정할 것.
class Id {
private static int idNumber=0;
private String nickname = new String();
private String password = new String();
private int phoneNumber;
// --생성자 --//
public Id(String nickname, String password, int phoneNumber) {
this.nickname = nickname;
this.password = password;
this.phoneNumber = phoneNumber;
idNumber += 1;
} //Id 생성자
static int getIdNumber() { // 식별 번호 가져오기
return idNumber;
} // getNumber
String getNickname() { return this.nickname;}
int getPhoneNumber() { return this.phoneNumber;}
} // class Id
nickname, password, phoneNumber을 입력하여 인스턴스를 생성하는 main 함수 (IdTester1 class)
public class IdTester1 {
public static void main(String[] args) {
Id a = new Id("morning","1234", "01012341234" );
Id b = new Id("coding","5678", "01045674567" );
System.out.println("a의 nickname: "+ a.getNickname());
System.out.println("b의 nickname: "+ b.getNickname());
System.out.println("a의 phoneNumber: "+ a.getPhoneNumber());
System.out.println("b의 phoneNumber: "+ b.getPhoneNumber());
System.out.println("회원 수:"+ Id.getIdNumber());
} //main
} // IdTester1
결과
a의 nickname: morning
b의 nickname: coding
a의 phoneNumber: 01012341234
b의 phoneNumber: 01045674567
회원 수:2
클래스 변수와 클래스 메서드
- 클래스의 메서드와 변수는 정적(static)이냐 비정적(static선언되지 않음)이냐에 따라 접근방법이 달라진다.
- 비정적 메서드, 비정적 필드는 개별 인스턴스에 소속된 인스턴스와 필드로, 객체를 생성한 뒤
인스턴스명.메서드명
의 방식으로 접근할 수 있다.
static
으로 선언된 정적 메서드와 정적 필드는 클래스명.메서드명
으로 접근하는 것이 원칙이며, 인스턴스 생성 없이 모두가 접근 가능하다.
- 정적 필드를 private가 아닌 public으로 설정한다면
클래스명.필드명
으로 접근할 수 있다.
- 원칙적으로 필드는 private으로 설정하지만 유용하면서도 편리한 상수가 있다면
public static final
변수로 설정하기도 한다.
유틸리티 클래스
- 인스턴스 메서드와 인스터스 변수를 일절 제공하지 않고, 정적 메서드와 변수만을 제공하는 클래스를 뜻한다.
- 클래스 본래의 목적인 '데이터와 데이터 처리를 위한 로직의 캡슐화'를 실행하는 것이 아닌,
'비슷한 기능의 메서드와 상수를 모아서 캡슐화'한 것이 유틸리티 클래스이다.
배열을 입력 받아 최솟값과 최댓값을 구하는 유틸리티 클래스 작성
public class MinMax {
public static int min(int[] a) {
int min = 0;
for (int i=0; i<a.length; i++) {
min = a[0];
if (min>a[i]) min=a[i];
} //for
return min; } //min
public static int max(int[] a) {
int max = 0;
for (int i=0; i<a.length; i++) {
max = a[0];
if (max<a[i]) max=a[i];
} //for
return max; } //max
} //MinMax
실행 클래스 MinMaxTester
public class MinMaxTester {
public static void main(String[] args) {
int[] x = {100, 70, 1, 30, 64};
System.out.println("배열 x의 최댓값은: "+ MinMax.max(x));
System.out.println("배열 x의 최솟값은: "+ MinMax.min(x));
}
}
결과
배열 x의 최댓값은: 100
배열 x의 최솟값은: 64