JAVA修饰符详解

                                                       JAVA修饰符详解

  • JAVA修饰符都包括哪些

访问范围修饰符:public、protected、default(默认)、private

静态修饰符   :static

最终修饰符   :final

抽象修饰符   :abstract

其他:transient:即告诉编译器,在该类的对象进行序列化的时候,这个变量不需要持久保存。这么做的主要原因是这个变量可以通过其它的变量来获取,使用它主要是从性能的角度考虑。

           volatile:指出可能有多个线程修改此变量,要求编译器优化以保证对此变量的修改能够被正确地处理。

                       native:用该修饰符修饰的方法在类中并没有实现,大多数情况下这类方法的实现是由C或C++编写的。可以参见Sun的Java Native接口(JNI),JNI提供了运行时加载一个native方法的实现,并将其与一个Java类关联。

                       synchronized:多线程支持,当一个线程调用该方法时,就会为这个对象加一个锁,从而其它线程就不可以再次调用这个方法,直到前一个线程将其释放

  • 修饰符分类

修饰符可以按好几种维度来做分类。比如:类修饰符、方法修饰符、变量修饰符。

1、类修饰符

public:控制类的访问权限。任何地方都可以访问该类。

default:控制类的访问权限。只有同包可以引用。

abstract: 抽象类。可以与控制修饰符共存。不能被实例化,abstract类可以没有抽象方法,但是有抽象方法时类一定要为抽象类。

final:终极类。不能被继承。

static:作为类修饰符只能用于修饰内部类。没有static的内部类,使用时需要先new一个外部类实例,然后利用这个实例来new内部类的实例。有static的情况下可以直接使用new 外部类.内部类的方式创建实例。

2、变量、方法 修饰符。(只有少量不同,合并来说明)

public:访问控制类修饰符。所有类中均可访问。

protected:访问控制类修饰符。本类、同包、子类可访问。(注:子类中可访问父类的变量,仅限于直接访问,不可以new一个父类的实例,通过实例调用父类的protected属性。)

default:默认访问控制类修饰符。本类、同包可访问。

private:访问控制类修饰符。本类可访问。

abstract: 只可用来修饰方法。修饰方法时,方法没有方法体。

final:修饰方法时,代表本方法不可以被子类重写,但是可以继承。修饰变量时,变量不可以被修改。

static:可以修饰方法和变量。标识方法、变量、是被绑定在类本身的,而不是实例。所以对应的方法和变量可以直接通过类名访问。所以我们就可以理解静态代码块为什么是在类加载的时候执行,而不是实例化的时候执行了。

注:局部变量只可以被final修饰。

最后放一个网上常用的关系图。

              访问权限   类   包  子类  其他包

        public     ∨   ∨    ∨     ∨          (对任何人都是可用的)

        protect    ∨   ∨   ∨     ×    (继承的类可以访问以及和private一样的权限)

        default    ∨   ∨   ×     ×    (包访问权限,即在整个包内均可被访问)

        private    ∨   ×   ×     ×    (除类型创建者和类型的内部方法之外的任何人都不能访问的元素)

注:要弄清楚访问权限,一定要清除访问者,被访问者是谁,如果在A类中通过B类的实例访问B类的父类C的protected方法,这时判断的是A是否与C同包。如果A类访问的是B类的方法b(),而B类的b()方法又调用了B类父类C中的protected方法,此时只要A有权限访问B的b方法即可。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值