Java修饰符:public,protected,private,不加修饰符。有什么区别呢?

问题


精华回答

如下表所示,Y表示能访问(可见性),N表示不能访问,例如第一行的第3个Y,表示类的变量/方法如果是用public修饰,它的子类能访问这个变量/方法

修饰符 类内部 同个包(package) 子类 其他范围
public Y Y Y Y
protected Y Y Y N
无修饰符 Y Y N or Y(见说明) N
private Y N N N

说明:

需要特别说明“无修饰符”这个情况,子类能否访问父类中无修饰符的变量/方法,取决于子类的位置。如果子类和父类在同一个包中,那么子类可以访问父类中的无修饰符的变量/方法,否则不行。

译注:本来觉得很简单一个问题,没想记录的,但看到答案,才发现自己以前错了。我以前一直以为无修饰符和private是一样的,如果没给变量加修饰符,java就默认为private。

stackoverflow链接:

http://stackoverflow.com/questions/215497/in-java-whats-the-difference-between-public-default-protected-and-private

专栏介绍:

非常喜欢stackoverflow,总能在上面找到疑难杂症的解决办法。偶然发现该网站有一个热度榜单。于是精选了热度较高的一些问题,阅读每个问题的答案,然后按照自己的理解梳理出来。因此,这些文章不是真正的翻译,而是按照自己的理解做了一些增删、润色,希望能把上面的讨论,更精简有效地分享给大家。

如需转载,请注明原文地址

http://blog.csdn.net/lizeyang

时间: 2024-10-13 12:15:56

Java修饰符:public,protected,private,不加修饰符。有什么区别呢?的相关文章

java中的public,protected,private权限修饰

在java程序前如果不加任何一个权限修饰符,默认是只允许包内访问,只有在同一个包内的类之间才能访问. public: 对每个人都是可用的,在任何地方的任何包内都可以访问. protected: protected处理的是继承的问题,只有子类和自己可以访问,不局限于本包. private: 只有自己可以访问.

php类点滴---访问修饰符public protected private

public可以被继承,可以外部访问(也就是实例化对象可以直接访问) protected受保护的,可以被子类继承,无法外部访问 private继承,外部访问都别想 <?phpclass coach{ public $master = "老张"; protected $lover = "丁大锅"; private $lovegame = "SM"; public function slogan() { echo "吼吼~哈哈~&qu

Java Modifiers, default/public/protected/private/ final/static/transient/synchronized/volatile

reference: http://www.studytonight.com/java/modifier-in-java.php Modifiers are keywords that are added to change meaning of a definition. In java, modfiers are cateogrized into two types: 1. Access control modifier 2. Non Access modifier 1) Access co

作用域public,protected,private,以及不写时的区别?

public:不同包.同一包.类内都可用 private:类内 protected: 不同包的子类.同一包.类内都可用 不写时:同一包内.类内default(friendly) 原文地址:https://www.cnblogs.com/arvins/p/8404574.html

Java修饰符public,private,protected及默认的区别

Java中访问修饰符public.private.protecte.default的意义讲解:public(接口访问权限): Java语言中访问限制最宽的修饰符,一般称之为“公共的”.被其修饰的类.属性以及方法不仅可以跨类访问,而且允许跨包(package)访问.private(你无法访问): Java语言中对访问权限限制的最窄的修饰符,一般称之为“私有的”.被其修饰的类.属性以及方法只能被该类的对象访问,其子类不能访问,更不能允许跨包访问.protected(继承访问权限): 介于public

JAVA修饰符类型(public,protected,private,friendly)

JAVA修饰符类型(public,protected,private,friendly) public的类.类属变量及方法,包内及包外的不论什么类均能够訪问:protected的类.类属变量及方法,包内的不论什么类,及包外的那些继承了此类的子类才干訪问:private的类.类属变量及方法,包内包外的不论什么类均不能訪问:假设一个类.类属变量及方法不以这三种修饰符来修饰,它就是friendly类型的,那么包内的不论什么类都能够訪问它,而包外的不论什么类都不能訪问它(包含包外继承了此类的子类),因此

Java中访问修饰符public、private、protecte、default

Java中访问修饰符public.private.protecte.default的意义讲解:public: Java语言中访问限制最宽的修饰符,一般称之为“公共的”.被其修饰的类.属性以及方法不 仅可以跨类访问,而且允许跨包(package)访问.private: Java语言中对访问权限限制的最窄的修饰符,一般称之为“私有的”.被其修饰的类.属性以 及方法只能被该类的对象访问,其子类不能访问,更不能允许跨包访问.protect: 介于public 和 private 之间的一种访问修饰符,一

[学习笔记]Java的访问指示符public,protected,private,缺省的作用域

0.引言 Java的访问指示符public,protected,private,缺省可以用来修饰类和方法. 1.作用域如下 public: 其它类都能访问此类或方法 protected: 为继承而生的,子类可以访问父类该修饰的方法 private: 为类自己所用,一般修饰成员变量 缺省: 同一个包内可用("友好"类) 2.同一个java文件里面若有多个类 (1) 每个编译单元(文件)都只能有一个public 类.每个编译单元有一个公共接口的概念是由那个公共类表达出来的.根据自己的需要,

14 PHP 类的继承 [public protected private] parent 构造方法 析构方法 重写 最终类和方法 设计模式

类的继承 简单理解: 某个类A具有某些特征,另一个类B,也具有A类的所有特征,并且还可能具有自己的更多的一些特征,此时,我们就可以实现:B类使用A的特征信息并继续添加自己的一些特有特征信息. 基本概念 继承:一个类从另一个已有的类获得其特性,称为继承. 派生:从一个已有的类产生一个新的类,称为派生. 继承和派生,其实只是从不同的方向(角度)来表述,本质上就是一个事情. 父类/子类:已有类为父类,新建类为子类.父类也叫"基类",子类也叫"派生类" 单继承:一个类只能从

public, protected, private,internal,protected internal的区别

虽然这个知识比较简单, 但是老是会忘, 写上来, 增强记忆. 在C#语言中,共有五种访问修饰符:public.private.protected.internal.protected internal.作用范围如下表: 访问修饰符 说明public 公有访问.不受任何限制.private 私有访问.只限于本类成员访问,子类,实例都不能访问.protected 保护访问.只限于本类和子类访问,实例不能访问.internal 内部访问.只限于本项目内访问,其他不能访问.protected inter