声明和访问控制有感

本来对于java也只是一个总体上的理解,但接触了scjp学习指南后,我渐渐意识到了java语言的一些微妙之处。
声明和访问的控制主要是相对于类,成员(方法和实例变量),接口等等:
1> 类:3个访问修饰符:public,protected,private;
4个访问级别:public,protected,private和默认;
非访问的修饰符:final,abstract,strictfp;
类不能同时是final和abstract的,也不能同时是final和private的,抽象
类不能被实例化,可以有抽象方法和非抽象方法,但是扩展抽象类的第一个具体
类必须实现其所有抽象方法;

2> 成员:成员的访问也有4个访问级别:public,protected,private和默认,具体
如下:
[table]
| 可见性 | public | protected | 默认 | private |
| 从同一个类 | 是 | 是 | 是 | 是 |
| 同一个包中的任何类 | 是 | 是 | 是 | 是 |
| 同一个包中的子类 | 是 | 是 | 是 | 否 |
| 不同包中的子类 | 是 | 是(通过继承) | 否 | 否 |
| 包外的任何非子类 | 是 | 否 | 否 | 否 |
[/table]
3>接口:接口是100%的抽象类,无论是否表明了abstract,它隐含是公共的和抽象
的,它只能有抽象方法,不能有具体方法,接口可以有常量,而且它们隐含总
是public,static和final,三者可以任意组合修饰常量;实现接口的类自身
可以是抽象的,抽象实现类不必实现接口方法(但第一个具体子类必须实现),
接口不能扩展类,或者实现一个类或接口,但是它可以扩展一个或多个接口;

除了以上几个大方面,还有许多小方面也应注意:局部变量不能有访问修饰符,它可
用的唯一一个修饰符为final,而且在使用前必须初始化;synchroinzed修饰符只能应用
于方法和代码块,abstract,synchroinzed,native,strictfp不能标识实例变量,而
transient,volatile只能应用于实例变量;对于枚举,它不是String和int,可在类的
外部或内部声明,但不能在方法中声明,声明在类外部的枚举不能被标识static,final,
abstract,protected和private,枚举构造函数可以带有参数,也可以重载。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值