Practice/JAVA

[JAVA] 정보은닉

요모조묘 2023. 3. 7. 14:03

객체지향 특징 : 캡슐화(은닉의 뜻) 

은닉을 한다. private가지고. (맴버필드 앞 )

class Student{
   String name;
   int age;
   //setXX

  //getXX

}

Student st - new Student();
st.age=2 //오류는 아니지만 시나리오 입장에서 오류이다.

:이러한 모호한 데이터가 수정되거나 조회되지 않도록

개발자가 제공하는 대로만 조회 =getXxx() , 수정=setXxx()할수 있도록 메소드를 제공한다.

set, get 주는대로만 써 ! ===> 맴버필드를 private로

 

🔔 구현방법

1. setXxx 규칙

   제한자 : public

   리터타입 : void

   메소드이름: set필드명(필드type 변수);

   인수 : 필수

 

2. getXxx 규칙

   제한자 : public

   리턴타입 : 필수

   메소드이름: get필드명();

   인수 : 없음

 

 

자동으로 getter setter 생성

 

 

🔔 코드

package day04;

public class Customer {

	private String id;
	private int age;
	private String addr;
	
	public Customer() {}

	public Customer(String id, int age, String addr) {
		//생성자 호출방법 - this(값,...)반드시 생성자 구현부 첫번째 줄
		this(id,age);
		this.addr = addr;
	}
	
	public String getId() {
		return id;
	}

	public void setId(String id) {
		this.id = id;
	}

	public int getAge() {
		return age;
	}

	public void setAge(int age) {
		this.age = age;
	}

	public String getAddr() {
		return addr;
	}

	public void setAddr(String addr) {
		this.addr = addr;
	}

	public Customer(String id, int age) {
		super();
		this.id = id;
		this.age = age;
	}
}

 

package day04;

public class CustomerMain {
	
	public static void main(String[] args) {
		Customer [] cuArr = new Customer[3];
		Customer cu1 = new Customer();
		Customer cu2 = new Customer("jang",20,"서울"); //모든필드 초기화
		Customer cu3 = new Customer("hee",30);
		
		for(Customer c: cuArr) {
			System.out.print("아이디 : "+c.getId()+"\t");
			System.out.print("나이 : "+c.getAge()+"\t");
			System.out.print("주소 : "+c.getAddr()+"\t");
		}

		//나이변경
		cuArr[0].setAge(25);
		System.out.println("-------변경후=----------");
		for(Customer c: cuArr) {
			System.out.print("아이디 : "+c.getId()+"\t");
			System.out.println("나이 : "+c.getAge()+"\t");
			System.out.println("주소 : "+c.getAddr()+"\t");
		}
	}

}