▼정답
다이렉트로 값 변경하지 못하게 하는 것.
데이터 멤버를 함부로 바꾸지 못하게 함수로만 정보를 접근할 수 있도록 하는 것
문법(private 등)을 만들어서 컴파일 에러를 나오게 한다.
private : class 내에서만 사용할 수 있다.
default : 같은 패키지 내에서는 접근 가능하지만, 다른 패키지에 있으면 접근 불가.
protected : protected가 붙은 변수, 메서드는
동일 패키지의 클래스 또는 해당 클래스를 상속받은 다른 패키지의 클래스에서만 접근이 가능하다.
public : 언제 어디서든 접근할 수 있다.
다음 멤버를 가지고 직사각형을 표현하는 Rectangle 클래스를 작성하라.
- int 타입의 x, y, width, height 필드: 사각형을 구성하는 점과 크기 정보
- x, y, width, height 값을 매개변수로 받아 필드를 초기화하는 생성자
- int square() : 사각형 넓이 리턴
- void show() : 사각형의 좌표와 넓이를 화면에 출력
- boolean contatins(Rectangle r) : 매개변수로 받은 r이 현 사각형 안에 있으면 true 리턴
- main() 메소드의 코드와 실행 결과는 다음과 같다
public static void main(String[] args) {
Rectangle r = new Rectangle(2, 2, 8, 7);
Rectangle s = new Rectangle(5, 5, 6, 6);
Rectangle t = new Rectangle(1, 1, 10, 10);
r.show();
System.out.println("s의 면적은 "+s.square());
if(t.contains(r)) System.out.println("t는 r을 포함합니다.");
if(t.contains(s)) System.out.println("t는 s를 포함합니다.");
}
출력:
===========
(2,2)에서 크기가 8x7인 사각형
s의 면적은 36
t는 r을 포함합니다.
▼정답
class Rectangle5 {
private int x1;
private int x2;
private int y1;
private int y2;
private int width;
private int height;
public boolean contains = false;
Rectangle5(int x1, int y1, int x2, int y2) {
this.x1 = x1;
this.x2 = x2;
this.y1 = y1;
this.y2 = y2;
this.width = Math.abs(x2 - x1);
this.height = Math.abs(y2 - y1);
}
public int getX1() {
return x1;
}
public int getX2() {
return x2;
}
public int getY1() {
return y1;
}
public int getY2() {
return y2;
}
public int getWidth() {
return width;
}
public int getHeight() {
return height;
}
int square() {
return width * height;
}
void show() {
System.out.println("(" + x1 + "," + y1 + ")에서 크기가 " + x2 + "x" + y2 + "인 사각형");
}
boolean contains(Rectangle5 r) {
if ((r.width <= this.width) && (r.height <= this.height)) {
contains = true;
} else {
contains = false;
}
return contains;
}
}
public class Test22 {
public static void main(String[] args) {
Rectangle5 r = new Rectangle5(2, 2, 8, 7);
Rectangle5 s = new Rectangle5(5, 5, 6, 6);
Rectangle5 t = new Rectangle5(1, 1, 10, 10);
r.show();
System.out.println("s의 면적은 " + s.square());
if (t.contains(r) == true) {
System.out.println("t는 r을 포함합니다.");
} else {
System.out.println("표시할 수 없습니다.");
}
if (t.contains(s) == true) {
System.out.println("t는 s를 포함합니다.");
} else {
System.out.println("표시할 수 없습니다.");
}
}
}