티스토리 뷰

반응형

 

 

13. 클래스와 객체 - 13. 코딩해 보세요 (2)

 

 

 

 

package chapter5.coffee;

public class Person {

	String name;
	int money;
	
	Person(String name, int money ){
		this.name = name;
		this.money = money;
	}
	
	public void buyStarCoffee(StarCoffee sCoffee, int money) {
		String message = sCoffee.brewing(4000);
		if(message != null) {
			this.money -= money;
			System.out.println(name + " ´ÔÀÌ" + money +"À¸·Î "  + message);
		}
	}
	
	public void buyBeanCoffee(BeanCoffee bCoffee, int money) {
		String message = bCoffee.brewing(4500);
		if(message != null) {
			this.money -= money;
			System.out.println(name + " ´ÔÀÌ" + money +"À¸·Î"  + message);
		}
	}
}
package chapter5.coffee;

public class StarCoffee {

	int money;
	
	public String brewing(int money) {
	
		this.money += money;
		if(money == Menu.STARAMERICANO) {
			return "별 다방 아메리카노를 구입했습니다";
		}
		else if(money == Menu.STARLATTE) {
			return "별 다방 라떼를 구입했습니다";
		}
		else {
			return null;
		}
	}
}

 

 

 

 

14. 클래스와 객체 - 14. static 변수, 메서드

| static 변수

여러 인스턴스가 하나의 값을 공유할 필요가 있음

static 변수는 처음 프로그램이 로드될 때, 데이터 영역에 생성됨.

인스턴스의 생성과 관계없이 사용할 수 있으므로 클래스 이름으로 참조

Student.serialNAme = 100;

클래스 변수, 정적 변수라고 함.

 

 

| static 변수와 인스턴스 변수

데이터 영역에 위치한 동일한 메모리를 참조

 

static 이 제일 먼저 메모리를 할당받는다.

static 함수를 구현하는 경우, 내용물이 일반 변수일 경우, 에러가 발생( 이유는 윗줄 ) 

static 은 큰 어레이, 큰 용량 쓰면 안됨.

package staticex;

public class Student {
	
	private static int serialNum = 1000;
	private int studentID;
	public String studentName;  
	public String address;
	
	public Student(String name) {
		studentName = name;
		serialNum++;
		studentID = serialNum;
	}
	
	public Student(int id, String name) {
		studentID = id;
		studentName = name;
		address = "ÁÖ¼Ò ¾øÀ½";
		serialNum++;
		studentID = serialNum;
	} 
	
	public void showStudentInfo() {
		System.out.println(studentName + "," + address);
	}
	
	public String getStudentName() {
		return studentName;
	}
	
	public int getStudentID() {
		serialNum++;
		return studentID;
	}

	public static int getSerialNum() {
		int i = 0;
		return serialNum;
	}

	public static void setSerialNum(int serialNum) {
		Student.serialNum = serialNum;
	}
	
	
	

}
package staticex;

public class StudentIDTest {

	public static void main(String[] args) {

		//Student studentLee = new Student("Lee");
		System.out.println(Student.getSerialNum());
		
		/*Student studentKim = new Student("Kim");
		
		System.out.println(Student.serialNum);
		System.out.println(Student.serialNum);
		
		
		System.out.println(studentLee.getStudentID());
		System.out.println(studentKim.getStudentID());
		*/
	}

}

| static 메서드

static  변수를 위한 기능을 제공하는 static 메서드

static 메서드 에서는 인스턴스 변수를 사용할 수 없음

클래스 이름으로 참조하여 사용하는 메서드

Student.getSerialNum();

클래스 메서드, 정적 메서드라고도함.

 

| 프로그램에서 변수의 유형

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

자바 인강이 듣고 싶다면 => https://bit.ly/3ilMbIO

반응형
댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함