20일차 java 연산(2023-01-19)

권단비·2023년 1월 19일
0

IT

목록 보기
38/139
post-thumbnail

[Eclipse 연습]

[계산]
class TV1 {
	int inch;
	String color;

	TV1(int inch, String color) {
		this.inch = inch;
		this.color = color;
	}

	int getSize() {
		return inch;
	}

	String getColor() {
		return color;
	}

	void show() {
		System.out.println(inch + "인치 " + color + "색 입니다.");
	}

	void compareSize(TV1 compareSize) {
		if (inch > compareSize.inch) {
			System.out.println("내가 큽니다.");
		} else {
			System.out.println("내가 작습니다.");
		}
	}
}

public class Test21 {
	public static void main(String[] args) {
		TV1 tv = new TV1(10, "blue");
		TV1 tv2 = new TV1(20, "blue");

		System.out.println(tv.getSize() + "인치 입니다");
		System.out.println(tv.getColor() + "색 입니다");

		tv.show(); // 10 인치 bule 색 입니다.
		tv.compareSize(tv); // 내가 작습니다.
		tv2.compareSize(tv); // 내가 큽니다.
	}
}
[결과값]
10인치 입니다
blue색 입니다
10인치 blue색 입니다.
내가 작습니다.
내가 큽니다.
[계산]
class Song1 {
	String title; // 필드
	String artist;
	String album;
	String country;
	int year;
	Song1(String title, String artist, int year, String country) {
		this.title = title; // 생성자 초기화
		this.artist = artist;
		this.album = album;
		this.country = country;
		this.year = year;
	}
	void show() {
		System.out.println(title + artist + year + country);
	}
}
public class Test21 {
	public static void main(String[] args) {
		Song1 song = new Song1("Dancing Queen", "ABBA", 1978, "스웨덴");
		song.show();
	}
}
[결과값]
Dancing QueenABBA1978스웨덴

[정보은닉]

다이렉트로 값 변경하지 못하게 하는 것.
데이터 멤버를 함부로 바꾸지 못하게 함수로만 정보를 접근할 수 있도록 하는 것
문법(private 등)을 만들어서 컴파일 에러를 나오게 한다.

★소스코드 데이터 멤버(인스턴스 변수)는 private로 막음
★데이터 멤버 변경은 함수로

[계산]
//private : 접근 제한 / 다른 클래서에서의 접근을 제한 시킨다. 같은 클래스 내에서만 접근 가능
class Circle5 {
	private double rad = 0; // 원의 반지름
	final double PI = 3.14;
	public Circle5(double r) {
		setRad(r);
	}
	////////////////////////////////////// 정보은닉
	public void setRad(double r) { // Setter
		if (r < 0) {
			rad = 0;
			return;
		}
		rad = r;
	}
	//////////////////////////////////////
	public double getArea() {
		return (rad * rad) * PI;
	}
}
public class Test22 {
	public static void main(String[] args) {
		Circle5 c = new Circle5(1.5);
		System.out.println(c.getArea());
		c.setRad(2.5);
		System.out.println(c.getArea());
		c.setRad(-3.3);
		System.out.println(c.getArea());
		// c.rad = -4.5;// 컴파일 오류 발생 안함
		// 다이렉트로 rad에 값을 집어 넣기 때문에 계산이 된다.
		// private를 사용하면 접근하지 못하게 만들어 컴파일 오류가 발생한다.
		System.out.println(c.getArea());
	}
}
[결과값]
7.065
19.625
0.0
0.0

[계산]
package example1; // class 생성 시 package에 있는 값을 지우지 않으면 자동으로 생성됨.

class Rectangle4 {
	private int width;
	private int heigth;

	public Rectangle4(int width, int heigth) {
		setWidth(width);
		setHeight(heigth);
	}

	public int getWidth() {
		return width;
	}

	public void setWidth(int width) {
		if (width < 0) {
			this.width = 0;
			System.out.println("잘못된 입력입니다.");
			return;
		}
		this.width = width;
	}

	public int getHeight() {
		return heigth;
	}

	public void setHeight(int heigth) {
		if (heigth < 0) {
			this.heigth = 0;
			System.out.println("잘못된 입력입니다.");
			return;
		}
		this.heigth = heigth;
	}

}

public class A {
	public static void main(String[] args) {
		Rectangle4 rec = new Rectangle4(10, -20);// 잘못된 입력입니다.
	}
}
[결과값]
잘못된 입력입니다.

[접근 수준 지시자]

private : class 내에서만 사용할 수 있다.
default : 같은 패키지 내에서는 접근 가능하지만, 다른 패키지에 있으면 접근 불가.
public : 언제 어디서든 접근할 수 있다.

0개의 댓글