3번 하나의 클래스로 하나의 객체만 생성할 수 있다.
4번 로컬 변수
4번 클래스는 반드시 필드와 메소드를 가져야 한다.
3번 필드는 반드시 생성자 선언 전에 선언되어야 한다.
1번 객체를 생성하려면 생성자 호출이 반드시 필요한 것이 아니다.
4번 메소드 이름은 중복해서 선언할 수 없다.
X 예시로 메소드 오버로딩이 있음
2번 반드시 리턴 타입이 달라야 한다.
X 리턴 타입 무관
2번 인스턴스 필드는 생성자 및 정적 블록에서 초기화 될 수 있다.
정적 메소드와 정적 블록은 객체가 없어도 실행된다는 특징 때문에 내부에 인스턴스 필드나 인스턴스 메소드를 사용할 수 없다, 또한 객체 자신의 참조인 this도 사용할 수 없다. p.249
2번 final 필드와 상수는 생성자에서 초기화 될 수 있다.
정적(statix) 필드는 객체 생성 없이도 사용할 수 있기 때문에 생성자에서 초기화 작업을 하지 않음
생성자는 객체가 셍성된 후 실행되기 때문 -> 상수는 불가능
final 필드는 가능
4번 com.mycom 패키지에 소속된 클래스는 com.yourcom에 옮겨 놓아도 동작한다.
클래스 앞에는 패키지명이 생략되어있다. 즉, 옮기면 동작을 안한다.
3번 default 접근 제한은 해당 클래스 내부에서만 사용을 허가한다.
private에 대한 설명이다.
public class Member {
public String name;
public String id;
public String password;
public int age;
public Member(String name, String id) {
this.name = name;
this.id = id;
}
}
public class MemberService {
String id = "hong";
String password = "12345";
p303_no14 member = new p303_no14(id, password);
boolean login(String id, String password) {
this.id = id;
this.password = password;
if(id.equals("hong") && password.equals("12345"))
return true;
else
return false;
}
void logout(String id) {
this.id = id;
System.out.print(id + "님이 로그아웃 되었습니다.");
}
}
public class Printer {
public void println(int a) {
System.out.println(a);
}
public void println(boolean a) {
System.out.println(a);
}
public void println(double a) {
System.out.println(a);
}
public void println(String a) {
System.out.println(a);
}
}
-> 메소드 리턴 타입 앞에 static을 붙인다.
public class p305_no18 {
private static ShopService shopservice = new ShopService();
private ShopService() {
}
public ShopService getInstance() {
return shopservice;
}
}
public class Account {
public final static int MAX_BALANCE = 1000000;
public final static int MIN_BALANCE = 0;
int balance = 0;
public int getBalance() {
return balance;
}
public void setBalance(int balance) {
if(MIN_BALANCE <= balance && balance <= MAX_BALANCE)
this.balance = balance;
}
}
추후 작성.... p306