import java.util.Scanner;
public class AccessModifier {
// public : 접근 제어자
public String publicVar = "public :접근제한이 없음";
protected String protectedVar = "protected : 같은 패키지 + 상속받은 클래스에서 접근 가능";
String defaultVar = "default : 같은 패키지에서만 접근 가능";
// 디폴트는 접근 제어자가 생략되었을 때의 접근 제어자. 생략해야만 디폴트
private String privateVar = "private : 클래스내에서만 접근 가능";
public void publicMethod() {
System.out.println(publicVar);
}
void defaultMethod() {
System.out.println(defaultVar);
}
protected void protectedMethod() {
System.out.println(protectedVar);
}
private void privateMethod() {
System.out.println(privateVar);
}
public static void main(String[] args) {
AccessModifier am = new AccessModifier();
System.out.println(am.publicVar);
am.publicMethod();
System.out.println(am.protectedVar);
am.protectedMethod();
System.out.println(am.defaultVar);
am.defaultMethod();
System.out.println(am.privateVar);
am.privateMethod();
Time t = new Time();
// t.hour = 9;
// t.minute = 380;
// t.second = -30;
Scanner s = new Scanner(System.in);
System.out.println("시간 입력");
int num = Integer.parseInt(s.nextLine());
t.setHour(num);
System.out.println("분 입력");
num = Integer.parseInt(s.nextLine());
t.setMinute(num);
System.out.println("초 입력");
num = Integer.parseInt(s.nextLine());
t.setSecond(num);
System.out.println(t.getTime());
t.clock();
}
}
public class AccessTest {
public static void main(String[] args) {
AccessModifier am = new AccessModifier();
System.out.println(am.publicVar);
am.publicMethod();
System.out.println(am.protectedVar);
am.protectedMethod();
System.out.println(am.defaultVar);
am.defaultMethod();
// System.out.println(am.privateVar);
// am.privateMethod(); //같은 클래스에서만 사용 가능
}
}
package test;
import AccessModifier;
import Time;
public class AccessTest extends AccessModifier{
public static void main(String[] args) {
AccessModifier am = new AccessModifier();
System.out.println(am.publicVar);
am.publicMethod();
// System.out.println(am.protectedVar);
// am.protectedMethod();
// System.out.println(am.defaultVar);
// am.defaultMethod(); //상속을 받은 클래스가 필요
// System.out.println(am.privateVar);
// am.privateMethod(); //같은 클래스에서만 사용 가능
AccessTest at = new AccessTest();
System.out.println(at.protectedVar);
at.protectedMethod();
/*
* 접근제어자를 사용하는 이유
* - 데이터를 보호하기 위해
* - 사용하는데 불필요한 멤버를 숨기기 위해
*/
Time t = new Time();
}
}
public class Time {
private int hour;
private int minute;
private int second;
String getTime() {
return hour + ":" + minute + ":" + second;
}
void clock() {
while (true) {
System.out.println(getTime());
stop(1000);
setSecond(second + 1);
}
}
void stop(int interval) {
try {
Thread.sleep(interval);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
public int getHour() {
return hour;
}
public void setHour(int hour) {
if (hour < 0) {
this.hour = 0;
} else if (23 < hour) {
this.hour = 0;
} else {
this.hour = hour;
}
}
public int getMinute() {
return minute;
}
public void setMinute(int minute) {
if (minute < 0) {
this.minute = 0;
} else if (59 < minute) {
this.minute = 0;
setHour(hour + 1);
} else {
this.minute = minute;
}
}
public int getSecond() {
return second;
}
public void setSecond(int second) {
if (second < 0) {
this.second = 0;
} else if (59 < second) {
this.second = 0;
setMinute(minute + 1);
} else {
this.second = second;
}
}
}