G_0913_028

charl hi·2021년 9월 13일
0

국비

목록 보기
28/122

static,,,, getInstance()

CompanyTest

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]


CarFactory

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

0개의 댓글