-
인스턴스 멤버 : 객체마다 가지고 있는 멤버
-
정적 멤버 : 클래스에 위치시키고 객체들이 공유하는 멤버
for 메모리 낭비를 방지하기 위함
생각해보기. 필드값이 달라지게 된다면 객체마다 가지고 있는게 맞는가? 필드값이 같은 객체라면?
-
싱글톤 : 단 하나의 객체만 생성을 해야하는 프로그램에서 이 객체를 부르는 이름
-
final 필드 : 초기값이 저장되면 최종적인 값이 되어서 프로그램 실행 도중에 수정 불가
-
상수: 불변의 값, 객체마다 저장할 필요가 없는 공용성을 지녔고 여러 값으로 초기화 X
앞에서 배운 것들은 다 거진 인스턴스 필드와 인스턴스 메소드였다.
public class car{
//필드
int gas;
//메소드
void setSpeed(int speed){...}
}
Car myCar = new Car();
myCar.gas = 10;
myCar.setSpeed(60);
Car myDaddyCar = new Car();
myDaddyCar.gas = 30;
myDaddyCar.setSpeed(100);public class car{
//필드
String model;
int speed;
//생성자
Car(String model){
this.model = model;
}
//메소드
void setSpeed(int speed){
this.speed = speed
}
void run(){
for(int i=10; i<=50; i+=10){
this.setSpeed(i);
System.out.println(this.model + "가 달립니다.(시속:" + this.speed + "km/h)");
}
}
}package sec05.exam01;
public class CarExample {
public static void main(String[] args) {
Car myCar = new Car("포르쉐");
Car yourCar = new Car("벤츠");
myCar.run();
yourCar.run();
}
}public class Calculator {
String color;
static double pi = 3.14159;
}클래스 이름으로 접근이 원칙
public class Calculator {
static double pi = 3.14159;
static int plus(int x, int y) {...}
static int minus(int x, int y) {...}
}
double result1 = 10 * 10 * Calculator.pi;
int result2 = Calculator.plus(10,5);
int result3 = Calculator.minus(10,5);가능은 하나 에러가 생길 수 있음
Calculator myCalcu = new Calculator();
double result1 = 10 * 10 * myCalcu.pi;
int result2 = myCalcu.plus(10,5);
int result3 = myCalcu.minus(10,5);인스턴스 필드나 인스턴스 메소드에 사용 X -> this 키워드도 사용 불가
static void method3(){
ClassName obj = new ClassName();
obj.field1 = 10;
obj.method1();
}public class Singleton {
private static Singleton singleton = new Singleton();
private Singleton() {}
static Singleton getInstance() {
return singleton;
}
}public static void main(String[] args) {
/*
Singleton obj1 = new Singleton(); //컴파일 에러
Singleton obj2 = new Singleton(); //컴파일 에러
*/
Singleton obj1 = Singleton.getInstance();
Singleton obj2 = Singleton.getInstance();
if(obj1 == obj2) {
System.out.println("같은 Singleton 객체 입니다.");
} else {
System.out.println("다른 Singleton 객체 입니다.");
}
}화면으로 같이 확인하기
public class Person {
final String nation = "Korea";
final String ssn;
String name;
public Person(String ssn, String name) {
this.ssn = ssn;
this.name = name;
}
}public class PersonExample {
public static void main(String[] args) {
Person p1 = new Person("123456-1234567", "홍길동");
System.out.println(p1.nation);
System.out.println(p1.ssn);
System.out.println(p1.name);
//p1.nation = "usa";
//p1.ssn = "654321-7654321";
p1.name = "홍삼원";
System.out.println(p1.nation);
System.out.println(p1.ssn);
System.out.println(p1.name);
}
}static final double EARTH_RADIUS = 6400;
static final double EARTH_AREA = 4 * Math.PI * EARTH_RADIUS * EARTH_RADIUS;
