객체 간 협력
1) 학생 클래스
2) 버스 클래스
3) 지하철 클래스
4) 택시 클래스
5) 교통수단을 활용하는 학생 인스턴스 생성하여 결과 출력하기
=> 이 프로그램에서 사용한 객체는 학생, 버스, 지하철, 택시다. 각 객체에 필요한 멤버 변수를 선언하고 생성자를 정의하고 객체 사이의 협력 기능도 구현했다.
학생 객체 입장 : 학생이 지하철을 탄다.
지하철 객체 입장 : 지하철에 학생이 탄다.
즉, 하나의 경우에 대해 두 객체에서 서로 다른 일이 발생하는 것이므로 이를 각각의 클래스에 메서드로 구현했다.
static 변수 = 정적변수 = 클래스 변수
: 클래스 내부에 선언하지만 다른 멤버 변수처럼 인스턴스가 생성될 때마다 새로 생성되는 변수가 아니라 프로그램이 실행되어 메모리에 올라갔을 때 딱 한 번 메모리 공간이 할당된다. 이 값은 모든 인스턴스가 공유한다. 즉 일반 멤버 변수는 인스턴스가 생성될 때 마다 새로 생성되어 각각 다른 studentName을 가지게 되지만, static으로 선언한 변수는 인스턴스 생성과 상관없이 먼저 생성되고 그 값을 모든 인스턴스가 공유하게 된다.
static 변수 사용하여 학번이 자동으로 부여되는 프로그램 만들기
클래스 이름으로 static 변수 참조하기
클래스 메서드
: 일반 멤버 변수를 위한 메서드가 존재하듯이 static 변수를 위한 메서드도 있다. 이런 메서드를 'static 메서드' 또는 '클래스 메서드' 라고 한다.
예문에서는 serialNum변수를 사용하는 메서드를 만들어 보았다.
클래스 메서드 내부에서는 인스턴스 변수를 사용할 수 없다. 인스턴스 변수는 인스턴스가 생성될 때 만들어지기 때문이다. 반면 클래스 메서드와 클래스 변수는 인스턴스가 생성되지 않아도 사용할 수 있다.