Java 수정자 분석

巴扎黑
풀어 주다: 2016-11-26 09:14:07
원래의
1690명이 탐색했습니다.

시청자 여러분, 오늘은 인터뷰에서 자주 묻는 질문이기도 한 자바의 접근 한정자 관련 이슈에 대해 이야기해보겠습니다.
간단히 말하면 코드 작성자는 코드에 액세스할 수 있는 시기와 코드에 액세스할 수 없는 시기를 구별하기 위해 액세스 한정자를 만듭니다. Java의 액세스 제한은 친화적(소위 기본 유형), 공개, 비공개 및 보호의 네 가지 범주로 나뉩니다.
오늘은 구별하기 어려운 두 가지 범주, 즉 친근함과 보호에 대해 살펴보겠습니다.
먼저 친근함부터 살펴보겠습니다. 멤버 앞에 수식자를 추가하지 않으면 해당 멤버의 액세스 수준이 기본 수준이 됩니다. 이때 해당 클래스와 동일한 패키지에 있는 다른 클래스는 이러한 멤버에 액세스할 수 있지만, 다른 패키지 클래스에 있는 클래스에서는 액세스할 수 없습니다.

Java 코드

package com.a1

/**

* A는 com.a1 패키지에 속합니다

* @author Will

*

*/

public class; A {

//구성원은 기본 액세스 수준입니다

int i

String str

void print(){

System.out.println("i:"+i+";str:"+str)

}

}


Java 코드

패키지 com.a1;

/**

* testA1은 com.a1에 속합니다

* @author Will

*

*/

public class testA1 {

public static void main( String[] args) {

//testA1과 A는 동일한 패키지에 속하므로 친숙한 멤버에 액세스할 수 있습니다.

A a=new A()

시스템 .out.println(a.i);

System.out.println(a.str)

a.print()

}


Java 코드

package com.b1

import com.a1; >

/**

* testA2는 com.b1에 속합니다

*

* @author Will

*

*/

public class testA2 {

public static void main(String[] args) {

// testA2와 A는 같은 패키지에 속하지 않기 때문에 친숙한 멤버에 접근할 수 없습니다

// 주석을 제거하면 오류가 발생합니다

A a = new A( ); ; 클래스 파일은 서로의 친숙한 멤버를 호출할 수 있습니다. 그 이유는 패키지를 지정하지 않으면 기본적으로 모든 파일이 기본 패키지에 속하므로 서로의 친숙한 멤버를 호출할 수 있기 때문입니다.

다음으로 protected 유형을 살펴보겠습니다. 이 유형은 친숙한(즉, 기본) 유형과 매우 유사하며 유일한 차이점은 상속입니다. 간단히 말해서, 클래스 파일이 동일한 패키지(상속 포함)에 속하지 않는 한 다른 클래스 파일은 친숙한 멤버에 액세스할 수 없지만 클래스가 상속되면 동일한 패키지에 속하는지 여부에 관계없이 상속의 경우 하위 클래스는 상위 클래스의 보호된 멤버에 액세스할 수 있습니다.

Java 코드

패키지 com.a1;

/**

* A는 com.a1 패키지에 속합니다

* i, str은 친숙한 유형

* j, str1은 보호 유형

* @author

*

*/

공개 클래스 A {

int i;

문자열 str;

protected int j

protected String str1;

공개 A(){

}

}

void print(){

System.out.println("i:"+ i+ ";str:"+str);

}

protected void print(int k){

System.out.println(" j :"+j+";str1:"+str1);                                                     

패키지 com.a1;

/**

* testA1은 com.a1에 속합니다

* @author Will

*

*/ 🎜>

공개 클래스 testA1 {

public static void main(String[] args ) {

// testA1과 A가 동일한 패키지에 속하므로 친숙한 멤버에 액세스할 수 있습니다.

// 또한 보호된 멤버에 액세스

A a= new A()

System.out.println(a.i)

System.out.println(a.str); ;

System.out.println(a.str1);

a.print()

}

}

Java 코드

package com.b1;

import org.junit.Test;

import com.a1.A;



공용 클래스 ExtendsA 확장 A{ > @Test

Public void test () {

Extendsa Extendsa = New Extendsa ()

// 상속의 경우 상위 클래스의 친숙한 멤버를 호출할 수 없습니다.

//댓글을 삭제하면 오류가 발생합니다.

//System.out.println(extendsA.i)

// System.out.println(extendsA. str);                                                       호출 가능한 상위 클래스 보호 멤버

System.out.println(extendsA.j)

System.out.println(extendsA .str1);

확장A. 인쇄(1);

}

}

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!