--------------------------------------------------------------------------------------
package a_veriable;
public class AccessModifier {
/*public 이 접근 제어자중 하나
*
* public
*/
public String publicVar = "public : 접근제한이 없음 " ;
protected String protectedVar = "protected : 같은 패키지 + 상속받은 클래스에서 접근 가능" ;
//같은 패키지에 있는 경우에 접근이 가능하고, 다른패키지에 있더라도 상속을 받으면 접근이 가능하다.
String defaultVar = "default : 같은 패키지에서만 접근 가능" ;
//생략을 해야지만 디폴트다. 접근제어자를 지금까지 적지 않았다. -> 왜냐면 디폴트였어서..... 디폴트는 적으면 안된다.
private String privateVar = " private : 클래스 내에서만 접근가능";
//다른클래스에서는 접근이 불가능하다.
//**암기
public void publicMethod() {
System.out.println(publicVar);
}
protected void protectedMethod(){
System.out.println(protectedVar);
}
void defaultMethod(){
System.out.println(defaultVar);
}
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 클래스에 )
* 불필요한 멤버를 감추기 위해
*
* 빅맥
* 1955
* 상하이
* 양상추
* 패티
* 케첩
* 마요네즈
*
* 접근제어자를 사용해서 양상추부터 마요네즈까지 알필요 없는 애들을 감추는것.
* 주문할때는 빅맥 1955 , 상하이 만 알면된다.
* 즉 불필요한 멤버를 감추기 위해 접근 제어자를 사용하는것.
*
*
*
*
*/
Time t = new Time(); //객체 생성을 함 .
/* t.hour = 9 ;
t.minute = 390;
t.second = -50 ; */
//Time 에서 옴 //사용자들이 이상한 입력을 하게 될때 접근하지 못하게 하려고. private 을 붙여준다.
//source -> getters and setters -> all
t.setHour(8);
t.setMinute(390);
t.setSecond(-50);
System.out.println(t.getTime());
t.clock();
}
}
--------------------------------------------------------------------------------------
package a_veriable;
public class Time {
private int hour ;
private int minute ;
private int second ;
public int getHour() {
return hour;
}
public void setHour(int hour) {
if( hour < 0 ) {
this.hour = 0 ;
}else if ( hour > 23){
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 (minute > 59){
this.minute = 0;
setHour( this.hour + 1 ) ;
}
else {
this.minute = minute;
}
}
public int getSecond() {
return second;
}
public void setSecond(int second) {
if(second < 0){
this.second = 0 ;
}
else if (second > 59){
this.second = 0;
setMinute(this.minute + 1 ) ;
}
else{
this.second = second;
}
}
//사용자들이 이상한 입력을 하게 될때 접근하지 못하게 하려고. private 을 붙여준다.
//source -> getters and setters -> all --> 메소드로 만들어줌
String getTime(){
return hour + ":" + minute + ":" + second;
}
void clock(){
while(true){
System.out.println(getTime());
stop(10);
setSecond(second + 1);
}
}
private void stop(int i) {
try { //예외처리 : 에러가 발생하는 것을 방지하는 것
Thread.sleep(i);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//우리가 원하는 t.clock(); (AccessModifier 에있는 ) 얘를 사용하고 싶은데
//그때 stop 은 알필요가 없지. clock 만 알고 싶잖아 그때 불필요한정보를
// 감추기 위해서 private 을 사용하는것.
}
}
댓글
댓글 쓰기