我是靠谱客的博主 称心大叔,最近开发中收集的这篇文章主要介绍Java类成员的缺省访问修饰符,java - 是不是“包私有”成员访问默认(无修饰符)访问的同义词?...,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

java - 是不是“包私有”成员访问默认(无修饰符)访问的同义词?

我对“私人包装”一词感到有些困惑。 一些文档使用的,以及"默认访问的使用。" Aren包私有和默认访问都是protected的同义词吗?

7个解决方案

131 votes

是的,它几乎一样。 protected修饰符指定只能在其自己的包中访问该成员(与package-private一样),此外,还可以在另一个包中通过其类的子类访问该成员。

Luciano Fiandesio answered 2019-08-14T06:14:36Z

32 votes

"默认" 访问修饰符(没有明确给出它们的那个)是" package-private",这意味着只有同一个包中的东西才能访问它们。 但是,在同一个包中并不意味着类之间的继承关系 - 它纯粹是一个命名约定。

"受保护的" 意味着不仅同一个包中的类,而且子类(无论这些子类在哪个包中)都能够访问它。

Adrian Petrescu answered 2019-08-14T06:15:08Z

14 votes

类的默认访问权限是package-private,但接口成员的默认访问权限是public。

例如

public interface I {

int A = 1;

// same as

public static final int A = 1;

void method();

// same as

public abstract void method();

class C { }

// same as

public static class C { }

}

接口的默认访问规则与类不同。

Peter Lawrey answered 2019-08-14T06:15:42Z

3 votes

包私有和默认访问是同义词。 对象还可以访问其类在同一包中的对象的受保护成员。 对象还可以访问其超类的受保护成员,而无需关于其包的条件。 作为一个具体的例子:

package ab;

class A {

protected void foo() {}

void dd(){}

}

class C {

void aa(){

A a = new A();

a.foo(); //legal

a.dd(); //legal

}

}

package sub;

class D extends A{

void ac(){

foo(); //legal ..

dd(); //illegal.. because dd has default access..

}

class E {

void ee(){

A a = new A();

a.foo(); //illegal

a.dd(); //illegal

}

Gursel Koca answered 2019-08-14T06:16:07Z

1 votes

'打包私密' 和默认访问是相同的。 在早期版本的编译器中,围绕1.1.2 / 3,' package' 是一个允许的修饰符,但被忽略,意思与没有修饰符相同,即'包私有'。 不久之后,在这种情况下放置/*package*/(作为评论)的短暂时尚。 同样,那时你可以声明像synchronized类这样的东西,尽管再没有实际的语义效果。

它们都不是' protected',它扩展到其他包中的派生类。

user207421 answered 2019-08-14T06:16:40Z

0 votes

来自Java语言规范

6.6.5示例:默认访问字段,方法和构造函数If   没有任何访问修饰符公开,   指定了protected或private,a   类成员或构造函数是   整个包装都可以访问   包含类的声明   在其中声明类成员,   但是类成员或构造函数是   在任何其他包装中都无法访问。

如果公共类有方法或   那么具有默认访问权限的构造函数   这个方法或构造函数不是   可以访问或继承的   在此包外声明的子类

Dead Programmer answered 2019-08-14T06:17:20Z

-1 votes

default和package-private都是相同的,这意味着任何类都可以使用它们,直到它们在同一个包中。

实际上,包私有术语被私有修饰符的含义称为私有,意味着它只在同一个类中可用,并且没有其他类或子类可以在同一个包中访问它或没有。

因此,package-private意味着与默认相同。

aayush shah answered 2019-08-14T06:17:59Z

最后

以上就是称心大叔为你收集整理的Java类成员的缺省访问修饰符,java - 是不是“包私有”成员访问默认(无修饰符)访问的同义词?...的全部内容,希望文章能够帮你解决Java类成员的缺省访问修饰符,java - 是不是“包私有”成员访问默认(无修饰符)访问的同义词?...所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(46)

评论列表共有 0 条评论

立即
投稿
返回
顶部