-
9일 차 생성자의 정적변수 접근삼성SDS_멀티캠퍼스/Java 2015. 9. 17. 10:01반응형
class Employee {
private String name;
private double salary;
private static int count = 0;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public double getSalary() {
return salary;
}
public void setSalary(double salary) {
this.salary = salary;
}
public static int getCount() {
return count;
}
public static void setCount(int count) {
Employee.count = count;
}
@Override
public String toString() {
return "EmployeeTest [name=" + name + ", salary=" + salary + "]";
}
public Employee(String n, double s) {
name = n;
salary = s;
count++;
}
protected void finalize() {
count--;
}
}
public class Test2 {public static void main(String[] args) {// TODO Auto-generated method stubEmployee e1, e2, e3;e1 = new Employee("김철수", 35000);e2 = new Employee("최수철", 50000);e3 = new Employee("김철호", 20000);int n = Employee.getCount();System.out.println("현재의 직원수 = " + n);}}setter, getter 정적변수에서는 자기자신 외의 모든값을 설정하거나 반환할 수 없다.
하지만 생성자는 정적변수의 값을 변형시킬 수 있다.
(번외)
finalize는 가비지 컬렉터를 호출하는건데
그냥 객체에 null을 사용하면 호출이 안된다.
그래서 이렇게 해야함
public class Test2 {
public static void main(String[] args) {
// TODO Auto-generated method stub
Employee e1, e2, e3;
e1 = new Employee("김철수", 35000);
e2 = new Employee("최수철", 50000);
e3 = new Employee("김철호", 20000);
int n = Employee.getCount();
System.out.println("현재의 직원수 = " + n);
e1 = null;
//e1은 가비지컬렉션 대상이 됐지만 당장 수거되는건 아니다
System.gc();
System.runFinalization();
//가비지컬렉터 강제로 일시키기(추천할만한 짓은 아니다)
System.out.println("가비지 컬렉터 일 시키기 = "+Employee.getCount());
}
}
반응형'삼성SDS_멀티캠퍼스 > Java' 카테고리의 다른 글
9일 차 복소수에 관하여 (0) 2015.09.17 9일 차 사용관계 (0) 2015.09.17 9일 차 정적변수 (0) 2015.09.17 8일 차 시험(깊은 복사, 얕은 복사) (0) 2015.09.16 8일 차 중간점검(생성자) (0) 2015.09.16