Java에서 기본 액세스 수식자는 무엇입니까?
메서드 또는 인스턴스 변수의 기본 접근 수식자는 무엇입니까?
예를 들어 다음과 같습니다.
package flight.booking;
public class FlightLog
{
private SpecificFlight flight;
FlightLog(SpecificFlight flight)
{
this.flight = flight;
}
}
이 컨스트럭터의 액세스 수식자는 보호되고 있습니까, 아니면 패키지화되어 있습니까?내의 (「」)는 사용할 수 ?flight.booking
스컨컨 터트?
Java 문서에서
클래스에 수식자(기본값, package-private라고도 함)가 없는 경우 해당 클래스는 자체 패키지 내에서만 표시됩니다(패키지는 관련 클래스의 그룹입니다.이러한 클래스는 나중에 학습합니다).
member level
, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , .no modifier
(private-private)는 최상위 클래스입니다.
자세한 내용은 이쪽()Which I wrote recently에서 확인하실 수 있습니다.
http://codeinventions.blogspot.com/2014/09/default-access-modifier-in-java-or-no.html
문서부터:
Access Levels
Modifier Class Package Subclass World
-----------------------------------------------------
public Y Y Y Y
protected Y Y Y N
(Default) Y Y N N
private Y N N N
상황에 따라 다르죠.
클래스 내일 경우:
class example1 {
int a = 10; // This is package-private (visible within package)
void method1() // This is package-private as well.
{
-----
}
}
인터페이스 내에 있는 경우:
interface example2 {
int b = 10; // This is public and static.
void method2(); // This is public and abstract
}
기본 액세스 수식자는 package-private입니다. 동일한 패키지에서만 표시됨
여기 코드 샘플이 있습니다.이 샘플은 대략적으로 요약할 수 있습니다.아래 외에도 다른 패키지의 기본값에 액세스할 수 없는 방법이 하나 더 있습니다.
서브클래스를 서브클래스로 분류하는 클래스가 다른 패키지에 포함되어 있는 경우는 서브클래스에서 디폴트에 액세스 할 수 없지만, 서브클래스가 같은 패키지에 포함되어 있는 경우는 디폴트에 액세스 할 수 있습니다.
package main;
public class ClassA {
private int privateVar;
public int publicVar;
int defaultVar;
}
package main;
public class ClassB {
public static void main(String[] args) {
ClassA a = new ClassA();
int v1 = a.publicVar; // Works
int v2 = a.defaultVar; // Works
int v3 = a.privateVar; // Doesn't work
}
}
package other;
public class ClassC {
public static void main(String[] args) {
ClassA a = new ClassA();
int v1 = a.publicVar; // Works
int v2 = a.defaultVar; // Doesn't work
int v3 = a.privateVar; // Doesn't work
}
}
는 '다보다'입니다.package
같은 패키지의 코드만이 이 컨스트럭터를 호출할 수 있습니다.
네, 같은 패키지로 보입니다.이 패키지 외부에 있는 어떤 것도 이 패키지에 액세스할 수 없습니다.
디폴트 액세스 수식자는 package-private(즉, DEFAULT)로, 같은 패키지에서만 표시됩니다.
컨스트럭터의 액세스 수식자는 package-private(기본값)입니다.클래스를 공개한다고 선언했으므로 어디에서나 클래스가 표시되지만 생성자는 표시되지 않습니다.컨스트럭터는 패키지에만 표시됩니다.
package flight.booking;
public class FlightLog // Public access modifier
{
private SpecificFlight flight;
FlightLog(SpecificFlight flight) // Default access modifier
{
this.flight = flight;
}
}
클래스에 생성자를 쓰지 않으면 컴파일러는 클래스의 동일한 액세스 수식자를 가진 기본 생성자를 생성합니다.다음 예제에서는 컴파일러가 퍼블릭액세스 수식자를 가진 기본 컨스트럭터를 생성합니다(클래스와 동일).
package flight.booking;
public class FlightLog // Public access modifier
{
private SpecificFlight flight;
}
기본 액세스 수식자 - 클래스에 수식자(기본값, package-private라고도 함)가 없는 경우 해당 패키지만 표시됩니다(패키지는 관련 클래스의 그룹입니다).
아니요, 다른 패키지에 대한 기본 액세스 수준을 호출할 수 없습니다.하지만 패키지 내 접근권은 있습니다.자세한 내용은 이 링크를 참조하십시오.
이 컨스트럭터의 액세스 수식자는 보호되고 있습니까, 아니면 패키지화되어 있습니까?
암시적으로 생성자 액세스 수식자는 클래스의 액세스 수식자가 될 것입니다.당신의 클래스가 공공 접근권을 가지고 있기 때문에, 컨스트럭터는 암묵적으로 공공 접근권을 갖게 될 것이다.
OCA Java SE 7 Programmer I 이라는 책에서 다음과 같이 기술되어 있습니다.
명시적 접근 수식자를 사용하지 않고 정의된 클래스의 멤버는 패키지 접근성(기본 접근성이라고도 함)으로 정의됩니다.패키지 액세스 권한을 가진 구성원은 동일한 패키지에 정의된 클래스 및 인터페이스에만 액세스할 수 있습니다.
언급URL : https://stackoverflow.com/questions/16164902/what-is-the-default-access-modifier-in-java
'programing' 카테고리의 다른 글
MySQL 쿼리에서 n번째 레코드 반환 (0) | 2022.11.25 |
---|---|
베스트 프랙티스: PHP에서 긴 여러 줄 문자열로 작업합니까? (0) | 2022.11.25 |
Java: 루프 초기화를 위해 에서 여러 변수를 초기화하시겠습니까? (0) | 2022.11.25 |
python(또는 특정 크기의 배열)에서 0 배열을 선언하는 방법 (0) | 2022.11.25 |
"이 페이지에서 벗어나시겠습니까?"를 표시하는 방법" 변경은 언제 커밋됩니까? (0) | 2022.11.05 |