JAVA

클래스와 메소드 예제 1

bysnow 2021. 3. 18. 07:00
728x90
반응형
SMALL
public class Car {
	//1.멤버 변수(field) : non-static(instance variable) / static(class variable)
	private int speed;//instance variable. private(Car 내에서만 접근 가능. 정보은닉, 
	//상속 받아도 불가)
	private boolean stop;
	private static int count;//class variable, object 공유 변수
	private final int year; // instance 변수, final은 한번 세팅할수있다. 변경불가.(생성자에서, 또는 선언시)
	private static final String COMPANY = "현대자동차";//상수
	
	//2. 생성자 메소드 : new 시에 자동호출되는 메소드
	
	public Car() {
		//year = 2021;
		//instance 변수 자동초기화 : speed=0, stop = false;
		this(0,false,2021);//밑의 생성자 호출.생성자의 overloading 사용시에 this 사용.
	}
	public Car(int speed, boolean stop, int year) {
		//매개변수와 멤버변수의 이름이 충돌할 때 구별하기 위해 this를 사용한다.
		this.speed = speed;
		this.stop = stop;
		this.year = year;
		count++;
		System.out.println(this.getClass().getSimpleName()+"생성");
	}

	
	//3.일반 메소드
	//getter,setter : 외부에서 값을 읽거나 수정 시 사용(변수들이 private이기 때문)
	public int getSpeed() {
		return speed;
	}
	public void setSpeed(int speed) {
		this.speed = speed;
	}
	public boolean isStop() {
		return stop;
	}
	public void setStop(boolean stop) {
		this.stop = stop;
	}
	public static int getCount() {
		return count;
	}

	/*
	 * private static void setCount(int count) { Car.count = count; }
	 */
	public int getYear() {
		return year;
	}
	//static method : 객체 생성 없이도 호출이 가능하다.
	public static String getCompany() {
		return COMPANY;
	}
	
	public void print() {
		System.out.println("------Car 정보------");
		System.out.println("speed : " + speed);
		System.out.println("stop : " + stop);
		System.out.println("year : " + year);
		System.out.println("count : " + count);
		System.out.println("company : " + COMPANY);
	}
	
	
	//4. instance block, static block
	{
		System.out.println("instance 생성시 마다 수행된다. 생성자와 비슷");
		System.out.println("**********************************");
		//굳이....생성자에 써도 된다. 잘 안쓴다.
	}
	
	static {
		System.out.println("class가 메모리에 로드 시, 즉 딱 한번 시행");
		System.out.println("**********************************");
	}
	//5.innerClass : class안에 class
}






//class : object를 만드는 틀이다. template, 설계도
/*
object : class를 이용해서 만든 독립된 개체이다.
*/
public class CarTest {
	
	public static void main(String[] args) {
		//Class Method 호출
		System.out.println(Car.getCompany());//new 안해도 사용가능
		System.out.println(Car.getCount());
		
		Car c1 = new Car();
		//instance method 호출
		
		System.out.println(c1.getSpeed());
		c1.print();
		
		Car c2 = new Car(100, true, 2020);
		c2.print();
		
		
	}

}
728x90
반응형
LIST

'JAVA' 카테고리의 다른 글

상속-기본예제  (0) 2021.03.29
Java - If 문의 사용  (0) 2021.03.29
DTO, Static, Singleton 그리고 접근 제한자  (0) 2021.03.17
자바로 숫자야구(Bulls and Cows)게임 만들기  (0) 2021.03.17
자바- 조건문과 반복문  (0) 2021.03.13