Web Developer/JAVA II

2. Constructor (클래스설계) 예제

sayitditto 2023. 1. 10. 21:00

필드에 값을 넣는 법 2가지

(1) 생성자를 통해 넣기: 외부 변수와 멤버변수(필드)를 구분하기 위해 Person 클래스 내에서는 필드에 this.를 붙인다.

(2) Setter 메소드를 통해 넣기: 필드 각각 setter 메소드를 만들어서 값을 저장한다.

필드 값을 꺼내는 법

(1) 일반 메소드 이용

(2) getter 이용: 필드 각각 getter 메소드를 만들어서 값을 꺼낸다.

I. 예제

1) Person

public class Person {
	
// 필드 -> private 꼭 넣어줘야함 (은닉화)
// 은닉화 (Hiding) :
	private String name;
	private String bday;
	private String gender;
	
// 메소드는 public	
// 생성자 (Constructor): 객체가 생성될 때 처음 불려지는 특수한 메소드.
	// 	-> 리턴타입이 아예 존재하지 않는다. 클리스명과 동일하며 최초 한번만 호출된다.
	
    public Person() {
		System.out.println("응애~~~~~ ");
	}
	
// 생성자 오버로딩 (Constructor Overloading) : 메소드 명은 똑같은데 파라미터의 타입이나 개수가 다를때 일치하는 경

	public Person(String name, String bday, String gender) {
		System.out.println("파라미터 있는 생성자 ");
		this.name = name;
		this.bday = bday;
		this.gender = gender;
	}
    
// setter, getter, 캡슐화 (Encapsulation): 외부에서는 캡슐화를 통해 필드에 접근한다.
	public void setName(String name) {
		this.name = name;
	}
	public void setBday(String bday) {
		this.bday = bday;
	}
	public void setGender(String gender) {
		this.gender = gender;
	}	
	
	public String getName () {
		return this.name;
	}
	public String getBday() {
		return this.bday;
	}
	public String getGender() {
		return this.gender;
	}
	
	
	public void sayhi() {
		System.out.println("인사하기 ");
	}
	public void walk() {
		System.out.println("걷기 ");
	}
	public void introduce() {
		System.out.println("내 이름은 " + this.name + "이고 성별은 " + this.gender);
	}

	public void printAge() {
		String year = gender.substring(0, 4);
		int age = 2023 - Integer.valueOf(year) + 1;

		System.out.println("나이는 " + age + "입니다 ");
	}
}

2) PersonTest

public class PersonTest {

	public static void main(String[] args) {
		
		Person p1 = new Person("바다 ", "19970922 ", "남 " );
			
//		p1.name = "sayitditto";
//		p1.bday = "19991122";
//		p1.gender = "Female";
		
		p1.setName("sayitditto");
		p1.setBday("19991122");
		p1.setGender("female");
		
		System.out.println(p1.getName());
		System.out.println(p1.getBday());
		System.out.println(p1.getGender());
	}
}