자바 기초 학습 패키지 및 접근 제어 권한 (4)
35295 단어 JavaSE
패키지 및 접근 제어 권한
가방 의 정의
가방 이란 실제로 폴 더 를 가리킨다.정의 패키지
// An highlighted block
package com.yootk.demo;
public class Hello{
public static void main(String args[]){
System.out.println("hello world");
}
}
위 에서 알 수 있 듯 이 Hello 클래스 는 com. yootk. demo 패키지 에 압축 컴 파일 되 어 있 습 니 다: javac - d. Hello. java
가방 가 져 오기
import 사용 하기
// An highlighted block
package com.yootk.demo;
import com.yootk.util.Message;
public class Hello{
public static void main(String args[]){
System.out.println("hello world");
}
}
만약 에 여러 개의 *. 자바 파일 중의 클래스 가 서로 인용 되 는 상황 이 존재 한다 면 컴 파일 순서 문 제 를 해결 하기 위해 어댑터 의 조작 을 제공 합 니 다: 자바 c - d. 자바. 그러면 코드 호출 순서에 따라 자동 으로 프로그램 컴 파일 을 진행 합 니 다.마스크 * 를 사용 하지 않 으 면 2 단계 작업 을 진행 합 니 다.
접근 제어 권한
NO.
범위.
private
default
protected
public
1
같은 가방 의 같은 종류 에 있 습 니 다.
✔
✔
✔
✔
2
같은 가방 의 다른 종류.
✔
✔
✔
3
다른 가방 의 하위 클래스
✔
✔
4
서로 다른 가방 의 비자 류
✔
간단하게 말하자면 private 는 한 종류 에서 만 접근 할 수 있 습 니 다.default 는 한 가방 에 만 접근 할 수 있 습 니 다.protected 는 서로 다른 가방 의 하위 클래스 에 있 습 니 다.Public 는 모든 것 을 위해 가능 합 니 다.
com. yootk. demoa. A 클래스 정의
// An highlighted block
package com.yootk.demoa;
public class A{
protected String info = "Hello";
}
com. yootk. demoa. B 클래스 정의
// An highlighted block
package com.yootk.demoa;
import com.yootk.demoa.A
public class B extends A{
public void print(){
System.out.println("A info = "+super.info);
}
}
그렇다면 일반적인 상황 에서 어떻게 권한 을 선택 합 니까?답: 속성 성명 은 주로 private 권한 을 사용 합 니 다.방법 설명 은 주로 Public 권한 을 사용 합 니 다.
단일 디자인 모드 (Singleton)
이전 대부분의 속성 정 의 를 내 릴 때 private 를 사용 하여 성명 을 했 고 구조 방법 에 대해 서도 private 성명 을 사용 할 수 있 으 면 이때 의 구조 방법 은 사유 화 되 었 다.구조 방법 비 민영화
// An highlighted block
class Singleton{
public void print(){
System.out.println("Hello");
}
}
public class Test {
public static void main(String[] args) {
Singleton singleton = null;
singleton = new Singleton();
singleton.print();
}
}
민영화 구조 방법
// An highlighted block
package chapter5;
class Singleton{
private Singleton(){
}
public void print(){
System.out.println("Hello");
}
}
public class Test {
public static void main(String[] args) {
Singleton singleton = null;
singleton = new Singleton();
singleton.print();
}
}
, , , Singleton 。
지금 은 싱글 톤 류 의 구조 방법 이 수정 되 지 않 고 증가 하지 않 으 며 print () 방법 이 수정 되 지 않 는 상황 에서 어떻게 조작 해 야 클래스 의 외부 가 실례 화 대상 을 통 해 print () 방법 을 호출 할 수 있 는 지 생각해 야 한다.사고 과정 1: private 접근 권한 으로 정 의 된 작업 은 본 류 에 만 접근 할 수 있 고 외부 에 서 는 호출 할 수 없습니다. 현재 구조 방법 이 사유 화 된 이상 이런 구조 방법 은 본 류 에 만 호출 될 수 있 습 니 다. 즉, 본 류 에서 만 이러한 사례 화 된 이미지 가 생 길 수 있 습 니 다.
// An highlighted block
package chapter5;
class Singleton{
Singleton instance = new Singleton();
private Singleton(){
}
public void print(){
System.out.println("Hello");
}
}
사고 과정 2: 한 클래스 의 일반 속성 에 대해 기본 적 인 상황 에서 본 클래스 에 실례 화 대상 이 존재 한 후에 야 호출 할 수 있 습 니 다. 그러나 이 프로그램 은 Singleton 클래스 의 외부 에서 실례 화 대상 을 만 들 수 없 기 때문에 Singleton 클래스 의 instance 속성 이 Singleton 클래스 의 실례 화 대상 이 없 을 때 호출 할 수 있 는 방법 을 생각해 야 합 니 다.그래서 static 로 완성 할 수 있 을 거 라 고 생각 했 어 요.
// An highlighted block
package chapter5;
class Singleton{
static Singleton instance = new Singleton();
private Singleton(){
}
public void print(){
System.out.println("Hello");
}
}
public class Test {
public static void main(String[] args) {
Singleton singleton = null;
singleton = Singleton.instance;
singleton.print();
}
}
:Hello
사고 과정 3: 먼저 이전의 학습 에 따라 클래스 의 모든 속성 을 봉인 한 다음 에 getter, setter 를 통 해 방문 하여 얻 을 수 있 습 니 다. 다만 getter 방법 도 static 형 으로 정의 합 니 다.
// An highlighted block
package chapter5;
class Singleton{
static Singleton instance = new Singleton();
private Singleton(){
}
public void print(){
System.out.println("Hello");
}
public static Singleton getInstance(){
return instance;
}
}
public class Test {
public static void main(String[] args) {
Singleton singleton = null;
singleton = Singleton.getInstance();
singleton.print();
}
}
클래스 에서 정 의 된 작업 을 호출 하려 면 실례 화 된 대상 이 필요 합 니 다. 이 때 클래스 내부 에서 static 방식 으로 공공 대상 을 정의 하고 매번 static 방법 을 통 해 유일한 대상 으로 돌아 갈 수 있 습 니 다. 그러면 외부 에서 몇 번 호출 되 든 최종 클래스 는 유일한 대상 만 생 길 수 있 습 니 다.이런 디자인 은 하나의 디자인 모델 에 속한다.
하지만 지금 은 다음 코드 도 사용 할 수 있다 는 작은 문제 가 있다.
// An highlighted block
class Singleton{
private static Singleton instance = new Singleton();
private Singleton(){
}
public void print(){
System.out.println("Hello");
}
public static Singleton getInstance(){
instance = new Singleton(); //
return instance;
}
}
public class Test {
public static void main(String[] args) {
Singleton singleton = null;
singleton = Singleton.getInstance();
singleton.print();
}
}
그래서 final 키 워드 를 추가 해 볼 수 있 습 니 다.
// An highlighted block
class Singleton{
private final static Singleton instance = new Singleton(); //
private Singleton(){
}
public void print(){
System.out.println("Hello");
}
public static Singleton getInstance(){
return instance;
}
}
:Hello
다 중 설계 모드
여러 가지 디자인 모델 은 사실 유한 한 정의 여러 대상 이다.단일 디자인 이 든 여러 가지 디자인 이 든 핵심 이 흔 들 리 지 않 는 것 이 바로 구조 방법의 사유 화 이다.
// An highlighted block
class Sex{
private String title;
private static final Sex MALE = new Sex(" ");
private static final Sex FEMALE = new Sex(" ");
private Sex(String title){
this.title = title;
}
@Override
public String toString(){
return this.title;
}
public static Sex getInstance(int ch){
switch (ch){
case 1:
return MALE;
case 2:
return FEMALE;
default:
return null;
}
}
}
public class Test {
public static void main(String[] args) {
Sex sex = null;
sex = Sex.getInstance(2);
System.out.println(sex);
}
}
:
JDK 1.7 이전에 switch 는 int 나 char 를 이용 하여 만 판단 할 수 있 었 는데, 단순히 숫자 나 문자 의 의미 가 명확 하지 않 을 경우 String 의 지원 을 추 가 했 기 때 문 입 니 다.
// An highlighted block
class Sex{
private String title;
private static final Sex MALE = new Sex(" ");
private static final Sex FEMALE = new Sex(" ");
private Sex(String title){
this.title = title;
}
@Override
public String toString(){
return this.title;
}
public static Sex getInstance(String ch){
switch (ch){
case "man":
return MALE;
case "woman":
return FEMALE;
default:
return null;
}
}
}
public class Test {
public static void main(String[] args) {
Sex sex = null;
sex = Sex.getInstance("man");
System.out.println(sex);
}
}
:
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
WeakHashMap,IdentityHashMap,EnumMap다른 맵 구현 클래스와 달리 WeakHashMap 클래스의 키 대상은 간접적으로 약한 인용의 지시 대상으로 저장되며, 키가 정상적으로 사용되지 않을 때 자동으로 항목을 제거합니다.더 정확히 말하면, 주어진 키에 대한...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.