java 修饰符默认_Java中的默认访问修饰符是什么?

Java中的默认访问修饰符是什么?

这个问题在这里已有答案:

什么是默认访问修饰符?                                     12个答案

如果我没有明确说明方法或实例变量的默认访问修饰符是什么?

例如:

package flight.booking;

public class FlightLog

{

private SpecificFlight flight;

FlightLog(SpecificFlight flight)

{

this.flight = flight;

}

}

此构造函数的访问修饰符是受保护的还是包的? 同一个包中的其他类,也就是flight.booking,可以调用这个构造函数吗?

13个解决方案

101 votes

来自Java文档

如果一个类没有修饰符(默认,也称为包私有),它只在自己的包中可见(包是相关类的命名组 - 您将在后面的课程中了解它们。)

在member level,您也可以使用public修饰符或no modifier(package-private),就像使用顶级类一样,具有相同的含义。

你可以在这里阅读全文(我最近写的):

[http://codeinventions.blogspot.com/2014/09/default-access-modifier-in-java-or-no.html]

Suresh Atta answered 2019-07-07T15:32:56Z

78 votes

来自文档:

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

Pradeep answered 2019-07-07T15:33:20Z

30 votes

这取决于具体情况。

当它在一个班级中时:

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

}

SKG answered 2019-07-07T15:34:15Z

20 votes

默认访问修饰符是package-private - 仅在同一个包中可见

Evgeniy Dorofeev answered 2019-07-07T15:34:50Z

10 votes

下面是一个代码示例,它应该为您总结一下......除了以下内容,显示如何访问另一个包中的默认值还有一件事。

如果子类的子类在另一个包中,则子类中不能访问默认值,但如果子类位于同一个包中,则可以访问它。

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

}

}

JTHouseCat answered 2019-07-07T15:35:43Z

5 votes

默认修饰符为package.只有同一包中的代码才能调用此构造函数。

cahen answered 2019-07-07T15:36:29Z

5 votes

是的,它在同一个包装中可见。 该包之外的任何内容都不允许访问它。

Maninder Singh answered 2019-07-07T15:36:58Z

2 votes

您的构造函数的访问修饰符将是包私有(默认)。 正如您已将该类声明为public,它将随处可见,但构造函数不会。 您的构造函数仅在其包中可见。

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;

}

Sachin Gorade answered 2019-07-07T15:37:56Z

1 votes

默认访问修饰符是包私有(即DEFAULT),它只能从同一个包中看到。

Piyush Bhardwaj answered 2019-07-07T15:38:28Z

1 votes

默认访问修饰符 - 如果类没有修饰符(默认值,也称为包私有),则只在其自己的包中可见(包是相关类的命名组)。

Atiq answered 2019-07-07T15:39:02Z

1 votes

不,您无法调用其他软件包的默认访问级别。 但是您可以在包中访问。 请点击此链接了解更多详情。

Hariprasath answered 2019-07-07T15:40:17Z

0 votes

此构造函数的访问修饰符是受保护的还是包的?

我认为你的构造函数访问修饰符隐含地是你的类的访问修饰符。 由于您的类具有公共访问权限,因此构造函数将隐式具有公共访问权限

PermGenError answered 2019-07-07T15:41:09Z

0 votes

从一本名为OCA Java SE 7 Programmer I的书中:

在不使用任何显式访问的情况下定义的类的成员   修饰符是使用包可访问性定义的(也称为默认值)  辅助功能)。 具有包访问权限的成员只能访问   在同一个包中定义的类和接口。

BERGUIGA Mohamed Amine answered 2019-07-07T15:42:03Z

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值