[JAVA] 캡슐화

이현경·2021년 4월 15일
0

JAVA

목록 보기
22/77

private : 정보 은닉

캡슐화란 멤버필드를 보호하기 위한 것이다.
객체의 필드와 메소드를 하나로 묶는 것


public class Ex04 {

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

public class Ex04Test {

	public static void main(String[] args) {
		// TODO Auto-generated method stub

		Ex04 ex = new Ex04();
		ex.setAge(15);
		System.out.println(ex.age);	// 15
		
		ex.age = 20;	// 은닉되어 있지 않다.
		System.out.println(ex.age);	// 20
	}

}
  • 캡슐화

public class Ex04 {

	private int age;
	private String name;
	
	public void setAge(int age) {
		this.age = age;
	}
	
	public void setName(String name) {
		this.name = name;
	}
	
	public int getAge() {
		return age;
	}
	
	public String getName() {
		return name;
	}
}

public class Ex04Test {

	public static void main(String[] args) {
		// TODO Auto-generated method stub

		Ex04 ex = new Ex04();
		ex.setAge(15);
		// System.out.println(ex.age);
		
		// ex.age = 20;	// 은닉되어 있지 않다.
		System.out.println(ex.getAge());	// 15
	}

}

멤버 필드를 직접 사용할 수 없는 것을 은닉이라고 한다.
정보 은닉된 멤버 필드를 사용하려면 메소드가 필요하다.
멤버 필드와 메소드를 묶어 캡슐화라고 말한다.


public class Ex02 {

	// 캡슐화
	// 멤버 필드
	private String name;
	private double height;
	private int age;
	private String addr;

	// 메서드
	public void setName(String name) {
		this.name = name;
	}

	public String getName() {
		return this.name;
	}
	
	public void setHeight(double height) {
		this.height = height;
	}
	
	public double getHeight() {
		return this.height;
	}
	
	public void setAge(int age) {
		this.age = age;
	}
	
	public int getAge() {
		return this.age;
	}
	
	public void setAddr(String addr) {
		this.addr = addr;
	}
	
	public String getAddr() {
		return this.addr;
	}
}

public class Ex02Test {

	public static void main(String[] args) {
		// TODO Auto-generated method stub

		Ex02 ex = new Ex02();
		
		// 멤버필드를 직접 사용할 수 없는 것을 (정보)은닉이라고 함.
		ex.setName("이현경");	// ex.name = "이현경";
		ex.setAge(25);	// ex.age = 25;
		ex.setHeight(156.5);	// ex.height = 156.5;
		ex.setAddr("경기도");	// ex.addr = "경기도";
		
		System.out.println(ex.getName());
		System.out.println(ex.getAge());
		System.out.println(ex.getHeight());
		System.out.println(ex.getAddr());
		System.out.println();
		
	}

}
profile
25. 컴퓨터학과 졸업 / SQLD, 정보처리기사 취득

0개의 댓글