5_JavaSE_修饰符

1. 修饰符的分类

在 Java 的关键字中,有一大部分关键字是用来“修饰”的,这类关键字叫做修饰符。修饰符分为访问修饰符非访问修饰符

2. 访问修饰符

访问修饰符主要是用来修饰类、变量和方法,从而控制它们能被访问的范围的关键字。主要分为四个:defaultprivatepublicprotected

private :私有。修饰变量、方法表示其只在这个类中可见。不能修饰类、接口。
protected:受保护。修饰变量、方法表示对同一个包内的子类可见。不能修饰类、接口。
default:(等于不写)默认。修饰类、接口、变量、方法表示在同一个包内可见
public:公开。修饰类、接口、变量、方法表示对所有类可见。

值得注意的是:

接口里的变量都隐式声明为 public static final,而接口里的方法默认情况下访问权限为 public 。其实很好理解,接口就是需要被继承然后实现接口的方法,那如果接口的方法还是为 protected 、private,那其它类访问都会受限,显然是不符合逻辑的,因此 protected 、private 是不能声明接口和接口的成员变量和成员方法的。

被private修饰的变量只能在这个类中被访问,其它类只能通过get/set方法访问,这样的好处是可以隐藏类的实现细节。

3. 非访问修饰符

static 修饰符
前面我们已经有开始涉及到这个修饰符了。可以用来修饰变量方法,表示该变量\方法属于类本身,只有一份,不属于任何某个对象实例。

修饰变量时(不能修饰局部变量):表示类变量,不管创建多少实例,都只有一份拷贝。
修饰方法时:表示类方法,不管创建多少实例,都只有一份拷贝,且静态方法不能使用类的非静态变量。,这里也很好理解。比如说我没有创建任何实例,然后通过类名去访问静态方法,这时候静态方法内部如果能调用非静态成员变量,那么这个变量到底属于哪个实例呢?是不是就矛盾了!因此,这是不可行的。

通过 类名.变量名类名.方法名()来访问

final 修饰符
同样用于修饰变量、方法和类
修饰变量时:表示“最后的”。因此,被修饰的变量必须制定初始值,并且赋值后不能修改。(表示最后那当然不能被修改呀,不能被修改那定义时就得加上初始值,不然它都没有初始值)
修饰方法时:可以被子类继承,但不能被子类重写。
修饰类时:不能被继承

abstract 修饰符
用来修饰类和方法,表示抽象的意思。
修饰类时:不能用来实例化对象,只能被其它类实现后进行扩展。
修饰方法时:该方法不用写内容,只能被子类实现。

注意:
1、一个类或方法不能同时被finalabstract修饰。(很好理解,如果一个类既表示不能被继承又表示需要被继承,那不就自相矛盾了吗?方法同理。)
2、如果一个类包含抽象方法,那么这个类必须声明为抽象类;抽象类可以包含抽象方法和非抽象方法。
3、继承抽象类的子类必须实现父类的所有抽象方法,除非子类也是抽象类
4、抽象方法声明格式:如:public abstract apple();以分号结尾。

synchronized 修饰符
修饰方法时:该方法同一时间只能被一个线程访问。

volatile 修饰符
修饰成员变量时:每次被一个线程访问时,都会从共享内存中重新读取该变量的值;并且成员变量发生变化时,会将变化值写入共享内存。从而保证不同线程看到的成员变量的值是一致的。(读取时强制读取共享变量的值,写入时强制写入到共享变量的值)

transient 修饰符
当我们将类定义为序列化类时,在变量前加上 transient 关键字后,序列化对象时,该变量不会被序列化。

4. 总结

修饰符的应用还需要不断的实践才能熟练,这就需要大量写代码才能熟能生巧了。下节我们讲运算符。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

执章学长

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值