목차
접기
728x90
반응형
package algo2;
public class Student {
public static int serialNum = 1000;
public int studentID;
public String studentName;
public int grade;
public String address;
public Student() {
serialNum++;
this.studentID = serialNum;
}
public void setStudentName(String name) {
this.studentName = name;
}
public String getStudentName() {
return this.studentName;
}
}
package algo2;
public class Main {
public static void main(String[] args) {
Student student1 = new Student();
student1.setStudentName("홍길동");
System.out.println("serialNum : " + student1.serialNum);
System.out.println(student1.getStudentName() + "의 학번은 " + student1.studentID + " 입니다.");
Student student2 = new Student();
student2.setStudentName("개똥이");
System.out.println("serialNum : " + student1.serialNum);
System.out.println("serialNum : " + student2.serialNum);
System.out.println(student2.getStudentName() + "의 학번은 " + student2.studentID + " 입니다.");
}
}
객체 지향 프로그램은 객체를 정의하고 객체 간 협력으로 만든다.
- 우리가 객체를 클래스로 만들어 구현하면 객체 사이에는 서로 어떤 값을 주고받고 메서드를 호출하는 일이 발생한다.
구현 과정
- 맨 처음 필요한 객체를 정의한다.
- 그리고 각 객체에 필요한 멤버 변수를 선언하고, 생성자를 정의한다.
자바 가상 머신은 클래스 파일을 컴파일하며 생성자를 선언하지 않으면 디폴트 생성자(default constructor)를 자동으로 생성해준다.
- 하나의 경우에 대해 두 객체에서 서로 다른 일이 발생하는 것이므로 이를 각각의 클래스에 메서드로 구현했다.
- 객체 지향 프로그램은 현실 세계를 가장 잘 반영한 프로그램 방식이라고도 한다.
static 변수
- 예약어인 static 변수는 다른 용어로
정적 변수
라고도 한다. - static 변수는 자바뿐만 아니라 다른 언어에서도 비슷한 개념으로 사용하고 있는 변수로서 자바에서는 다른 멤버 변수처럼 클래스 내부에 선언한다.
- static 변수는 클래스 내부에 선언하지만, 다른 멤버 변수처럼 인스턴스가 생성될 때마다 새로 생성되는 변수가 아니다.
- static변수는 프로그램이 실행되어 메모리에 올라갔을 때 딱 한번 메모리 공간이 할당된다.
- 그리고 그 값은 모든 인스턴스가 공유한다.
static 변수 유용한 정보
- 일반 멤버 변수는 인스턴스가 생성될 때마다 새로 생성되어 각각 다른 studentName을 가지게 되지만,
static으로 선언한 변수는 인스턴스 생성과 상관없이 먼저 생성되고 그 값을 모든 인스턴스가 공유하게 되는 것이다.
이런 이유 때문에 static 변수를 클래스에 기반한 변수라고 해서클래스 변수(class variable)
라고도 한다. - static 변수는 인스턴스에 상관없이 동일한 데이터의 메모리를 가리킨다.
- static 변수는 같은 클래스에서 생성된 인스턴스들이 같은 값을 공유할 수 있으므로, 인스턴스 간에 공통으로 사용할 값이 필요한 경우
유용하게 사용할 수 있다.
728x90
반응형
LIST
'Java' 카테고리의 다른 글
[ java ] 변수 유효 범위란? (0) | 2020.12.17 |
---|---|
[ java ] static 변수와 static 메서드 연습하기/클래스 메서드/클래스 변수 (0) | 2020.12.17 |
[ java ] 객체. this (0) | 2020.12.17 |
[ java ] 정보 은닉, 접근 제어자 (0) | 2020.12.17 |
[ java ] 생성자(constructor) (0) | 2020.12.14 |