せいぎょ者
せいぎょ者
コントロールバー
同じパッケージで使用できます.
子供なら他のコースでも近づけるので、親の親は怒らない.
アクセス制御者
package com.company.s04.p05.subp01;
public class ClassA {
public int x;
protected int y;
int z; // default (=package)
private int w;
public void methodA(){} //
protected void methodB(){} //
void methodC(){}//default (=package)
private void methodD(){} //private - 내부 구현을 위해서만 사용.
public void methodTest(){ //같은 클래스
System.out.println(x);
System.out.println(y);
System.out.println(z);
System.out.println(w);
methodA();
methodB();
methodC();
methodD();
}
}
class ClassATest{ // 같은 패키지인 경우.
public static void main(String[] args) {
ClassA obj = new ClassA();
System.out.println(obj.x);
System.out.println(obj.y);
System.out.println(obj.z);
//System.out.println(obj.w); 접근 불가
obj.methodA();
obj.methodB();
obj.methodC();
//obj.methodD(); private 검색도 안됨
}
}
package com.company.s04.p05.subp02;
import com.company.s04.p05.subp01.ClassA;
class ClassAA extends ClassA{
public void methodTest(){
System.out.println(x);
System.out.println(y);
// protected 자식이면 다른 패키지여도 ok 실제로 많이 씀.
// 하나의 자식 외에는 못봄. 부모의 부모는 건들 수 없음.(자바특성)
// protected는 private처럼 쓰지만, 상속한 경우 구현 시 접근이 필요 할 때 사용.
// System.out.println(z);
// System.out.println(w); private - 상속해도 못봄
methodA();//public
methodB();//protected
//methodC();
//methodD();
}
}
// public default만 사용 가능,
// private은 쓸 수 없음 같은 클래스만 볼 수 있기 때문에 다른 클래스라는 개념이 없기 때문에.
// protected도 사용 불가.
public class ClassB {
public static void main(String[] args) {
ClassA obj = new ClassA();
System.out.println(obj.x); //다됨 public
// System.out.println(obj.y); //protected 다른 패키지인경우 자식만됨.
//System.out.println(obj.z); //default 다른 패키지이면 안됨.
//System.out.println(obj.w); 접근 불가
obj.methodA();
//obj.methodB();//protected 다른 패키지인경우 자식만됨.
//obj.methodC();//default 다른 패키지이면 안됨.
//obj.methodD(); private 검색도 안됨
}
}
public openとprivateは閉じてpublic方法の違いを提供します
public class MyDate {
private int day;
private int month;
private int year;
private boolean isVaild = true;
public void setDay(int day){
this.day = day;
}
public int getDay(){
return day;
}
public int getMonth() {
return month;
}
public void setMonth(int month) {
if(month <1 || month > 12){
isVaild = false; // 값이 유효범위에 해당하는지 체크를 해준다.
}
this.month = month;
}
public int getYear() {
return year;
}
public void setYear(int year) {
this.year = year;
}
public void showDate(){
if (isVaild){
System.out.println(this.year + "년" + this.month + "월" +this.day+"일");
}else{
System.out.println("유효하지 않은 범위 입니다.");
}
}
}
その他の制御者
public class Foo {
final int x = 0; // final variable
final int y; // blank finial variable
public Foo(int y) {
this.y = y; // blank final variable initialization
}
}
클래스의
または공통적인
の意味を持つ.アクセス制御プログラムを使用して情報を非表示にする
クラス内部のデータを誤って使用することを防止できます.
モノトーンモード
class SingletonClass {
private static SingletoneClass instance = new SingletonClass();
private SingletonClass() {}
public static SingletonClass getInstance() {
return instance;
}
}
Reference
この問題について(せいぎょ者), 我々は、より多くの情報をここで見つけました https://velog.io/@im_joonchul/제어자-Modifierテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol