package ch04_constructor;
/*
* 생성자 (constructor)
* → class 명과 동일한 이름을 사용하고, 객체를 초기화하는 용도로 사용.
* → 생성자를 정의하지 않으면, 멤버필드의 기본값으로 초기화하는 기본생성자가 자동으로 만들어져 생성.
* → 생성자는 매개변수를 사용할 수 있기때문에 오버로딩이 가능함.
* → 생성자를 하나라도 정의하면 기본생성자가 자동으로 만들어지지 않음.
* → 반환타입을 정의하지 않음.
*/
public class Member {
private String id;
private String name;
private int age;
// 생성자의 이름은 클래스명과 동일해야함.
public Member() {
System.out.println("- Member() -");
id = "none";
name = null;
age = 0;
}
public Member(String _id, String _name, int _age) {
System.out.println("- String _id, String _name, int _age -");
id = _id;
name = _name;
age = _age;
}
public String getId() { return id; }
public void setId(String _id) { id = _id; }
public String getName() { return name; }
public void setName(String _name) {
if(_name.length() <= 10) {
name = _name;
} else {
System.out.println("이름은 10글자까지만 가능합니다.");
}
}
public int getage() { return age; }
public void setage(int _age) {
if(_age >= 0 && _age <= 130) {
age = _age;
} else {
System.out.println("나이는 0~130 사이만 가능합니다.");
}
}
public void info() {
System.out.println("--- 회원정보 ---");
System.out.println("ID : " + id);
System.out.println("이름 : " + name);
System.out.println("나이 : " + age + "세");
}
}
package ch04_constructor;
// 객체가 만들어져야 한다면 생성자가 생성되어야함.
// 객체를 만들시에 해당 클래스의 생성자가 만들어져 있음.
// 생성자를 직접 구현하지 않으면 멤버필드 값을 해당 자료형의 default값으로 초기화함.
// → 생성자를 하나도 안만들었을 때만 기본생성자가 작동함.
public class MemberManager {
public static void main(String[] args) {
Member manA = new Member();
manA.info();
System.out.println();
// 해당 타입에 맞는 생성자를 찾아서 작동함.
Member manB = new Member("002","manB",28);
manB.info();
}
}
package ch04_constructor;
/*
* Book class를 정의하고, BookManager class에서 테스트하세요.
* → 책제목, 지은이, 진열위치, 가격의 관리가 가능합니다.
* → 멤버필드 값을 설정, 사용하는 getter, setter 메서드를 정의하세요.
* > 지은이 : 2~10 글자 가능.
* 진열위치 : A, B, C만 가능.
* 가격 : +(plus)만 가능.
*/
class Book {
private String title;
private String author;
private char area;
private int price;
public String gettitle() { return title; }
public void settitle(String _title) { title =_title; }
public String getauthor() { return author; }
public void setauthor(String _person) {
if(_person.length() < 11 && _person.length() > 1) {
author = _person;
} else {
System.out.println("지은이는 2~10글자만 가능합니다.");
}
}
public char getarea() { return area; }
public void setarea( char _where ) {
if(_where == 'A' | _where == 'B' | area == 'C') {
area = _where;
} else {
System.out.println("진열위치는 A, B, C만 가능합니다.");
}
}
public int getprice() { return price; }
public void setprice(int _price) {
if(_price >= 0 ) {
price = _price;
} else {
System.out.println("가격은 양수만 가능합니다.");
}
}
public void info() {
System.out.println("--- 책 정보 ---");
System.out.println("제목 : " + title);
System.out.println("지은이 : " + author);
System.out.println("진열위치 : " + area);
System.out.println("가격 : " + price + "원");
}
}