Controlling Access to Members of a Class:
http://download.oracle.com/javase/tutorial/java/javaOO/accesscontrol.html引用
There are two levels of access control:
At the top level—public, or package-private (no explicit modifier).(类级访问修饰符只有public和default两个)
At the member level—public, private, protected, or package-private (no explicit modifier).(成员(变量、方法)级的有这四个)
A class may be declared with the modifier public, in which case that class is visible to all classes everywhere. If a class has no modifier (the default, also known as package-private), it is visible only within its own package (packages are named groups of related classes—you will learn about them in a later lesson.)
At the member level, you can also use the public modifier or no modifier (package-private) just as with top-level classes, and with the same meaning. For members, there are two additional access modifiers: private and protected. The private modifier specifies that the member can only be accessed in its own class. The protected modifier specifies that the member can only be accessed within its own package (as with package-private) and, in addition, by a subclass of its class in another package.
java中,若类和成员(变量、方法)前无访问修饰符,则为包访问权限;常称之为default、friendly或package-private。即:
default = friendly = package-private
访问修饰符从宽到严:
public protected default(friendly、package-private) private
| 当前类 | 同一包内 | 子孙类 | 其他包非子孙类(前三个之外的所有其他) |
public | √ | √ | √ | √ |
protected | √ | √ | √ | × |
default(friendly、package-private) | √ | √ | × | × |
private | √ | × | × | × |
同一包内的可以认为是朋友;子孙类可以认为是子女;从default访问修饰符可以看出,相比子女,朋友更亲!
一个特殊的情况是接口:
接口中的引用
All methods in an interface are implicitly public and abstract (but not final).
All fields in an interface are implicitly public, static and final.
在接口的方法/属性上使用上述修饰符都是多余的!建议直接省略,否则接口的方法写成 public String getXXX(), 整的好像接口的方法可以是非public似的!
访问修饰符不可以用在局部变量上,否则编译不通过。原因显而易见:局部变量的scope就是定义该局部变量的方法内,加访问修饰符是没有意义的。
http://wuaner.iteye.com/admin/blogs/1666376
抽象方法的访问修饰符只能是public或者protected。不能是private是因为抽象方法应该被重写,private使方法对子类不可见;语法上抽象方法可以不加访问修饰符(default访问权限),但最好不要这样做,因为会导致位于不同包下的抽象类之子类对抽象类的该抽象方法不可见。如下:
package lxg.oo.abstractclass;
public abstract class AbstractClassTest {
abstract void aMothed();
}
package lxg.oo;
import lxg.oo.abstractclass.AbstractClassTest;
/**
* 该实体类和其继承的抽象类在不同包下
* 只能有两个选择:声明当前类也为抽象,或者修改抽象父类AbstractClassTest中抽象方法的访问修饰符为public|protected
*
*/
public class ConcreteClassInAnotherPackage extends AbstractClassTest {
}
分享到:
相关推荐
modifiers是方法修饰符的集合,也是制作更多的方法。 显然,方法修饰符会修改方法。 具体来说,在 Ruby 术语中,它们是类方法,它们: 取一个符号参数,它命名同一个类的实例方法,和返回相同的符号,但导致对命名...
Java Class and Method Modifiers
官方离线安装包,亲测可用
用于创建modifiers.json词典的脚本,以方便修饰符。 用法 编辑make-modifiers.py文件,然后将所需的键添加到hotkeys变量中。 例如,将["KH-FG", "grave"],到hotkeys数组中,以创建⌘ `切换窗口的快捷方式。 另请...
qlik-修饰符 一个用于处理Qlik产品中的表达式修饰符JavaScript模块。 !实验! 这个想法是提供一组有用的表达式修饰符以及使用它们的便捷方法。 首先是accumulation ,它可以产生类似于以下结果: 它是如何工作的?...
余烬修饰符 该插件提供了一个在Ember中创作的API。 它反映了Ember的API,并具有编写简单的功能修饰符和编写更复杂的类修饰符的变体。 此插件是和的下一个迭代。 对API进行了一些重大更改。 有关差异的列表,请参见...
已弃用JSX的事件修饰符:改为查看https://github.com/vuejs/jsx。此babel插件在JSX中添加了一些语法糖。...[” jsx-event-modifiers“,” transform-vue-jsx“]}事件修饰符示例:export default {render(){return
余烬手势修饰符 提供手势作为修饰符的插件。 兼容性 Ember.js v3.16或更高版本 Ember CLI v2.13或更高版本 Node.js v10或更高版本 安装 ember install ember-gesture-modifiers 用法 当前仅提供“平移”修改器。 ...
鸡尾酒方法修饰符 类似 Moose 的方法修饰符作为cocktailJS 注释(参见 )
@ ember / render-modifiers 提供元素修饰符,可用于挂钩到渲染生命周期的特定部分。何时使用这些修饰符(何时不使用它们) 此软件包中提供的修饰符非常适合快速从经典的Ember组件迁移到Glimmer组件,因为它们很大...
protected修饰符与final修饰符Objectives(学习目标)理解访问修饰符protected的使用;会使用protected限制对数据和方法的访问会使用final修饰常量、不可覆盖的方法和不可继承的类11.14 protected 数据成员和方法子类...
高级修饰符 扩展了您可以在 Exp:resso 的商店模块中定义价格修饰符的方式。 执照 麻省理工学院许可证 (MIT) 版权所有 (c) 2014 Jeremy Worboys 特此授予任何人免费获得本软件副本和相关文档文件(“软件”)的许可...
--> JAVA IDENTIFIERS:- ... JAVA MODIFIERS:- 像其他语言一样,可以通过使用修饰符来修改类、方法等。 有两类修饰符: 访问修饰符:default、public、protected、private 非访问修饰符:final、abstract、strictfp
草稿js修饰符 模块化状态修饰符yarn add draft-js-modifiers# ornpm i draft-js-modifiers用法 import * as Modifiers from 'draft-js-modifiers'const newEditorState = Modifiers . mergeBlockData ( ...
修饰符(Modifiers)是以半角句号 . 指明的特殊后缀,用于指出一个指令应该以特殊方式绑定。这篇文章给大家介绍Vue.js中.native修饰符,感兴趣的朋友一起看看吧。 .native修饰符 官方对.native修饰符的解释为: 有...
余烬滚动修饰符 基于Scoll的Ember应用修饰符查看! 我们遵守《行为的《 》。兼容性Ember.js v3.8或以上Ember CLI v2.13或更高版本Node.js v10或更高版本安装ember install ember-scroll-modifiers贡献有关详细信息,...
这个机制允许程序在运行时透过Reflection APIs取得任何一个已知名称的class的内部信息,包括其modifiers(诸如public,static 等等)、superclass(例如Object)、实现之interfaces(例如Cloneable),也包括fields和...
表情符号数据Java Java缺少的表情符号库。 基于表情符号数据emoji-data-java是一个轻量级的Java库,可帮助您在Java应用程序中使用Emojis。如何获得?通过Maven: < dependency> < groupId>...
Microsoft Source Analysis for C#是微软内部代码检查工具。能够帮助项目团队执行一系列常用的源代码...(访问修饰符)Use of access modifiers (文件内容)Allowed contents of files (调试文本)Debugging text
1.SourceAnalysis (StyleCop)的终极目标是让所有人都能写出优雅和一致的代码,因此这些...访问修饰符的使用(Use of access modifiers ) 文件内容(Allowed contents of files ) Debugging文本(Debugging text)