4월 12일 내용정리-4
1.static: 클래스가 읽혀질때 메모리(데이터영역)에 읽혀짐.
모든 객체에서 공통으로 사용한다.
객체가 만들어지기 전에 만들어지는 것이라
인스턴스 멤버(필드,메소드)에서는 static 멤버를 사용할 수 있지만 static에서는 인스턴스 멤버를 사용 할수 없다.
왜냐면 인스턴스멤버는 객체가 만들어져야 사용할수있기때문
선언 클래스
package study_0412;
public class colorPen {
//static 필드(=정적필드), 공통사용
static int allCount=0;
static int redCount=0;
//인스턴스필드 , 개별적으로 사용할 것, 각 객체마다 따로 설정
String color;
//생성자
public colorPen(String color) {
this.color=color;
//만들어진 객체 전체 개수
allCount++;
//빨강색 펜인 객체 개수
if(color.compareToIgnoreCase("red")==0) { //compareToIgnoreCase 대소문자 무시하고 글자내용만 비교
redCount++;
}
}
public static int getAllCount() {
return allCount;
}
public static void setAllCount(int allCount) {
colorPen.allCount = allCount;
}
public static int getRedCount() {
return redCount;
}
public static void setRedCount(int redCount) {
colorPen.redCount = redCount;
}
public String getColor() {
return color;
}
public void setColor(String color) {
this.color = color;
}
//메서드
// void Counter() {
// System.out.println("전체펜수"+allCount());
// System.out.println("빨강펜수"+redCount());
// }
}
실행 클래스
package study_0412;
public class colorPen_Test {
public static void main(String[] args) {
colorPen red =new colorPen("red");
colorPen green =new colorPen("green");
colorPen blue =new colorPen("blue");
colorPen red01 =new colorPen("red");
colorPen green01 =new colorPen("green");
colorPen blue01 =new colorPen("blue");
colorPen green02 =new colorPen("green");
colorPen blue02 =new colorPen("blue");
//static으로 선언된것은 클래스명.static필드 =>static 다른영역에 저장되기때문
// 클래스명.static메서드()
System.out.println("전체펜수:"+colorPen.getAllCount());
System.out.println("빨강펜수:"+colorPen.getRedCount());
}
}