8일차: JAVA 접근제한자

jk·2024년 1월 10일
0

kdt 풀스택

목록 보기
12/127



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);
    }
}
profile
Brave but clumsy

0개의 댓글