Javaベース(アクセス制御者)

3871 ワード

4月18日内容まとめ-2
1.アクセス制御者
public>protected>default>private
順次アクセス範囲が広い.
(1)public->いつでもどこでも使用可能
(2)protected->同じパケット、同じクラスに書き込むことはできますが、他のパケットクラスに書き込むことはできません.ただし、継承されたサブクラスはドラッグ&ドロップで使用できます.(つまり、他のパッケージの親は使用できません)
(3)default->onlyは同じパッケージにしか書き込めません.アクセス制御プログラムを使用しない場合は、デフォルトでは
(4)private->同じクラスでのみドラッグ&ドロップできます.
*親は、クラスが継承するサブクラスよりも安全な訪問者を使用できません.
package study_0418;

public class exam01 {
	private int secret=1;
			int roommate=2;
	protected int child=3;
	public int anybody=4;
	
	public void show01() {
		System.out.println(secret);
		System.out.println(roommate);
		System.out.println(child);
		System.out.println(anybody);
	}
	
	public void show() {}
	
}
継承されたサブクラス
package study_0418;

public class exam02 extends exam01{
	
	public void show01() {
//		System.out.println(secret); private이라 같은 클래스안에서만 쓸수 있으므로 에러남 getter와 setter를 통해서 접근가능
		System.out.println(roommate);
		System.out.println(child);
		System.out.println(anybody);
	}
	
//	void show() {} 부모는 public 인데, 자식이 default가 되면서 부모보다 더 보안강화된 접근자는 쓸수 없다.
}
関係を含むサブクラス
package study_0418;

public class exam03 {
	void print() {
		exam01 exam = new exam01(); //포함관계 선언!
//	System.out.println(exam.secret); private이라 같은 클래스안에서만 쓸수 있으므로 에러남, getter와 setter를 통해서 접근가능
		System.out.println(exam.roommate);
		System.out.println(exam.child);
		System.out.println(exam.anybody);
	}
}
2.import文の使い方
他のパッケージの読み込みと書き込み時
importパッケージ名.等級
または
importパッケージ名.;
->パッケージ名の下にあるすべてのクラスを読み込みます.
ただし、importパッケージ名1.パッケージ名2.
importパッケージ名1.*パスが異なるため、まったく異なるクラスを読み込むことができます.
パッケージはフォルダとして扱うことができます.
package study_0418_01;

import study_0418.exam01; //다른 패키지(study_0418)를 불러와서 요청한 class(exam01)를 사용하게 준비시켜줄께!

public class One extends exam01 { 
	void print() {
		
	//System.out.println(secret); private 접근자
	//System.out.println(roommate); default 접근자
	System.out.println(child); //protected 접근자 
	System.out.println(anybody);//public 접근자
	
	}

}
別のパッケージimport文を読み込みます
package study_0418;

import study_0418_01.One; //다른 패키지의 클래스를 쓸수 있게 준비 시켜줄께!

public class One_Test {

	public static void main(String[] args) {
		One o= new One(); 
		
//		System.out.println(o.secret);  private 접근자 같은 패키지와 같은 클래스에서만
//		System.out.println(o.roommate); default 접근자 같은패키지에서만
		System.out.println(o.child); //protected 접근자 같은패키지 + 다른 패키지 상속받은 자식클래스
		System.out.println(o.anybody); //public 접근자 어디든 상관없음

	}

}
3.final付属のclassは継承する必要はありません
継承された親にはなれません.
finalになるとオーバーライドはできません
4.静的オブジェクトを作成する前に、まずメモリに格納されます.
オブジェクト作成に関連する作成者として初期化できません.
静的は静的ブロックによって初期化することができる.
package study_0418_01;

public class Static {

	String name;
	int count;
	
	public Static(String name, int count) {
		this.name=name;
		this.count=count;
	}
	
	static int num; //객체를 생성하기전에 먼저 메모리에 올라가므로 생성자를 사용하여 초기화 할수 없다.
	static { //static 변수를 초기화, 정적블록(인스턴스를 만들기전에 만들어짐)
		int su=0;
		for(int i=0;i<=10;i++) {
			su+=1;
			num=su;
		}
	}
	
}
5.クレームによるアレイ形成
package study_0418_01;

public class Student {
	//필드선언
	private String name;
	private String hakbun;
	
	//생성자 선언
	public Student() {}
	public Student(String name, String hakbun) {
		this.name=name;
		this.hakbun=hakbun;
	}
	
	//getter와 setter 선언하기
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getHakbun() {
		return hakbun;
	}
	public void setHakbun(String hakbun) {
		this.hakbun = hakbun;
	}
	
	//메서드 선언	
	public void studentInfo() {
		System.out.println(name+","+hakbun);
	}
}
6.enumは、数値が限られている場合やタスクが限られている場合に使用できる列挙タイプです.
たとえば、曜日は7つなので、enumを使うことができます.
電気を消す