static,,,, getInstance()
package kr.or.kh18;
import java.util.Calendar;
class Company {
private static Company instance = new Company();
//****이렇게 생성
private Company() {
//private이므로 밖에서 new를 통해 객체생성 못함
//내부에서 객체생성하겠다는 의미
}
//외부에서 사용할 수 있도록 public + 객체 생성안해도 사용할 수 있는 static메소드 만들어야함!!!
public static Company getInstance() {
if(instance == null) {
//객체가 하나도 생성안되면 생성할 수 있게 해주고????
instance = new Company();
}
return instance; //객체 있다면 instance을 return
}
}
public class CompanyTest{
public static void main(String[] args) {
Company com1 = Company.getInstance();
Company com2 = Company.getInstance();
//Calendar 생각하라!!!
Calendar cal = Calendar.getInstance();
System.out.println(com1);
System.out.println(com2);
//com1, com2의 주소값이 같다!!!!
System.out.println(cal);
}
}
kr.or.kh18.Company@5b2133b1
kr.or.kh18.Company@5b2133b1
java.util.GregorianCalendar[time=1631524007687,areFieldsSet=true,areAllFieldsSet=true,lenient=true,zone=sun.util.calendar.ZoneInfo[id="Asia/Seoul",offset=32400000,dstSavings=0,useDaylight=false,transitions=30,lastRule=null],firstDayOfWeek=1,minimalDaysInFirstWeek=1,ERA=1,YEAR=2021,MONTH=8,WEEK_OF_YEAR=38,WEEK_OF_MONTH=3,DAY_OF_MONTH=13,DAY_OF_YEAR=256,DAY_OF_WEEK=2,DAY_OF_WEEK_IN_MONTH=2,AM_PM=1,HOUR=6,HOUR_OF_DAY=18,MINUTE=6,SECOND=47,MILLISECOND=687,ZONE_OFFSET=32400000,DST_OFFSET=0]
package kr.or.kh18;
class CarFactory{
private static CarFactory instance = new CarFactory();
//private static 객체생성
private CarFactory() {}
//private 생성자
public static CarFactory getInstance() {
//public static 반환타입은 클래스
if(instance == null) {
instance = new CarFactory();
}
return instance;
}
public static Car createCar() {
//마찬가지로, Car 객체를 생성할 createCar()
Car car = new Car();
return car;
}
}
class Car{
private static int serialNum = 10000;
//외부에서 못쓰게 private, 내부 객체들이 접근하게 static***
private int carNum;
public Car() {
//외부에서 접근하게 public, 다른 내부 객체에서 Car객체생성하므로 static없음
//차를 만들면 시리얼넘버++
serialNum++;
carNum = serialNum;
}
public int getCarNum() {
//private인 carNum을 가져오기 위해
return carNum;
}
}
public class CarFactoryTest {
public static void main(String[] args) {
CarFactory factory = CarFactory.getInstance();
Car myCar = factory.createCar();
Car yourCar = factory.createCar();
//반환타입이 Car이므로 맞춰야지
System.out.println("나의 차의 넘버 : "+myCar.getCarNum());
System.out.println("너의 차의 넘버 : "+yourCar.getCarNum());
}
}
나의 차의 넘버 : 10001
너의 차의 넘버 : 10002