반응형
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
반응형
'스프링, 자바' 카테고리의 다른 글
[패스트캠퍼스 수강 후기] 자바 인강 100% 환급 챌린지 19회차 미션 (0) | 2020.08.28 |
---|---|
[패스트캠퍼스 수강 후기] 자바 인강 100% 환급 챌린지 18회차 미션 (0) | 2020.08.27 |
[패스트캠퍼스 수강 후기] 자바 인강 100% 환급 챌린지 16회차 미션 (0) | 2020.08.25 |
[패스트캠퍼스 수강 후기] 자바 인강 100% 환급 챌린지 15회차 미션 (0) | 2020.08.24 |
[패스트캠퍼스 수강 후기] 자바 인강 100% 환급 챌린지 14회차 미션 (0) | 2020.08.23 |