这篇文章将为大家详细讲解有关如何分析modifier修饰符,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。
修饰符总结 Modifiers
函数修饰符始终在返回值类型之前!!!
变量修饰符始终在变量类型之前!!!
--------------------------------------------------------------------------------
ClassModifier: one of
Annotation public protected private
abstract static final strictfp
外部类: 不可被 protected, private, static 和 final 修饰
成员内部类: 都可以
非成员内部类: 都不可以
FieldModifier: one of
Annotation public protected private
static final transient volatile
MethodModifier: one of
Annotation public protected private
abstract static final synchronized native strictfp
ConstructorModifier: one of
Annotation public protected private
InterfaceModifier: one of
Annotation public protected private
abstract static strictfp
VariableModifier: one of
Annotation final
--------------------------------------------------------------------------------
class field method constructor interface variable
Annotation √ √ √ √ √ √
public/protected/private √ √ √ √ √ ×
abstract/strictfp √ × √ × √ ×
static √ √ √ × √ ×
final √ √ √ × × √
transient/volatile × √ × × × ×
synchronized/native × × √ × × ×
--------------------------------------------------------------------------------
Annotation
以上都可以
public/protected/private
权限修饰符, 除了 variable 都可以 ->常考
abstract/strictfp
class/interface/method
static
除了 constructor 和 variable 都可以 -> 常考
final
除了 constructor 和 interface 都可以
transient/volatile
只能修饰 field
synchronized/native
只能修饰 method
--------------------------------------------------------------------------------
final 与 abstract 是冲突的.
--------------------------------------------------------------------------------
/*
包与包之间成员和构造器的访问权限总结:
public protected 无修饰符 private
同一个类中 ok ok ok ok
同一个包中 ok ok ok
不同包*子类 ok ok
不同包中 ok
不同包成员访问的前提: 被访问的类必须是 public, 且被访问的成员也必须是 public 的
不同包中的子类还可以直接访问父类中 protected 的成员和构造器
不同包访问, 有2层权限限制:
第1层是类的权限限制, 类的权限可以是 public/无权限修饰符2种
第2层是成员的权限限制, 成员的权限可以是 public/protected/无权限修饰符/private 等4种
必须类的权限允许访问, 才考虑成员的权限是否允许访问!!!
实际编程中, 访问的类一般都是不同包的:
类是 public 的, 构造器是 public 的,
允许被不同包的类创建对象; 否则禁止被不同包的类创建对象
类是 public 的, 构造器是 protected 的
只允许被不同包的类继承(就是设计来被继承的, 此时不允许被不同包的类创建对象)
类是 public 的, 构造器是 private 的(一般也是 final 的)
不允许被创建对象(包括本包的类都不行), 此时一般提供 public 方法获取类的对象
不同包中, protected 的作用就是限制成员和构造器只能被子类访问;
同一包中, protected 修饰成员变量和构造函数时没任何作用, 修饰成员函数时仅仅限于覆盖.
*/
关于如何分析modifier修饰符就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。