1.정보은닉에 대하여 설명하시오.
- Java 에서의 정보은닉은 4개의 접근제한자를 통해 이루어진다.
- public: 다른 package 의 코드를 접근할 수 있다.
- protected: 상속받은 class 까지도 접근할 수 있다.
- default: 동일 package 만 접근할 수 있다.
- private: 같은 class 에서만 접근가능하다.
2.정보은닉의 개념을 도입하여, 아래의 코드를 완성하시오.
public class Rectangle { // int width; int height; // int getArea() { return width * height; } }// 코드 // public class Rectangle { private int width; private int height; // public Rectangle(int width, int height) { setWidth(width); setHeight(height); } // private static boolean isPositive(int integer) { boolean positive; if (integer >= 0) { positive = true; } else { System.out.println("값이 음수입니다."); positive = false; }; return positive; } // public int getWidth() { return this.width; } public int getHeight() { return this.height; } public void setWidth(int width) { if (this.isPositive(width)) { this.width = width; } else { this.width = 0; }; } public void setHeight(int height) { if (this.isPositive(height)) { this.height = height; } else { this.height = 0; }; } // public int getArea() { return (this.width * this.height); } }
3.접근제한자 4가지 종류에 대하여 설명하시오.
- public: 다른 package 의 코드를 접근할 수 있다.
- protected: 상속받은 class 까지도 접근할 수 있다.
- default: 동일 package 만 접근할 수 있다.
- private: 같은 class 에서만 접근가능하다.
4.class 에서 붙일수 있는 접근 제한자 2개를 설명하시오?
- class 에서 붙일 수 있는 접근 제한자는 public 과 default 가 있다.
5.지역변수에 접근 제한자가 필요없는 이유는?
- 그 함수 안에서만 쓸 수 있기 때문에 그 scope 를 나가면 어차피 사용할 수 없다.
6.정보 은닉 개념을 도입 하여 코딩 하시오..
class Child{ int age; String name; // void showInfo() { System.out.println("나이:" + age); System.out.println("이름:" + name); // } }// 코드 // public class Child { private int age; private String name; // public Child(int age, String name) { setAge(age); setName(name); } // public int getAge() { return this.age; } public String getName() { return this.name; } public void setAge(int age) { if (age < 0) { System.out.println("아직 태어나지도 않았습니다."); this.age = 0; } else { if (age > 19) { System.out.println("성인입니다."); }; this.age = age; }; } public void setName(String name) { if (name == null) { System.out.println("이름이 없습니다."); this.name = "이름없음"; } else if (name.length() > 10) { System.out.println("이름이 깁니다."); this.name = "긴 이름"; } else { this.name = name; }; } // public void showInfo() { System.out.println("나이:" + this.age); System.out.println("이름:" + this.name); } }