Java 修饰符

Java语言提供的修饰符主要分为以下两类:

  • 访问修饰符
  • 非访问修饰符

访问修饰符

Java中,可以使用访问修饰符来保护对类、变量、方法和构造方法的访问。Java 支持 4 种不同的访问权限。

  • default (即默认): 在同一包内可见,不使用任何修饰符。使用对象:类、接口、变量、方法。

  • private : 在同一类内可见。使用对象:变量、方法。 注意:不能修饰类(外部类)

  • public : 对所有类可见。使用对象:类、接口、变量、方法

  • protected : 对同一包内的类和所有子类可见。使用对象:变量、方法。 注意:不能修饰类(外部类)

default :默认访问修饰符(不使用任何关键字)

       使用默认访问修饰符声明的变量和方法,对同一个包内的类是可见的。接口里的变量都隐式声明为 public static final,而接口里的方法默认情况下访问权限为 public。

private:私有访问修饰符

       被声明为 private 的方法、变量和构造方法只能被所属类访问,并且类和接口不能声明为 private。声明为私有访问类型的变量只能通过类中公共的 getter 方法被外部类访问。Private 访问修饰符的使用主要用来隐藏类的实现细节和保护类的数据。

public:公有访问修饰符

       被声明为 public 的类、方法、构造方法和接口能够被任何其他类访问。

protected:受保护的访问修饰符

  • 子类与基类在同一包中:被声明为 protected 的变量、方法和构造器能被同一个包中的任何其他类访问;

  • 子类与基类不在同一包中:那么在子类中,子类实例可以访问其从基类继承而来的 protected 方法,而不能访问基类实例的protected方法。

       protected 可以修饰数据成员,构造方法,方法成员,不能修饰类(内部类除外)

非访问修饰符

为了实现一些其他的功能,Java 也提供了许多非访问修饰符。

  • static 修饰符,用来修饰类方法和类变量。
  • final 修饰符,用来修饰类、方法和变量,final 修饰的类不能够被继承,修饰的方法不能被子类重写,修饰的变量为常量。
  • abstract 修饰符,用来创建抽象类和抽象方法。
  • synchronized 、transient和 volatile 修饰符,主要用于线程的编程。
  • native修饰符,标识为本地方法。

static

1.可以修饰:修饰属性、修饰方法、修饰块、修饰类(内部类)

2.特点:

       1)静态元素在类加载时就初始化了,此时没有创建对象

       2)静态元素存储在静态元素区中,每一个类

       3)静态元素只加载一次,全部类对象及类本身共享

       4)被static修饰过可以直接通过类名直接访问

       5)静态元素属于类,不属于任何一个对象

       6)栈内存创建开始用完即回收,堆内存GC回收,静态元素区GC无法管理

       7)非静态成员(堆内存中对象)可以访问静态成员(静态区)

       8)静态成员中可以访问静态成员

       9)静态成员不可以访问非静态成员

              个数上:一个点出发访问一堆名字相同的东西

              关系上:静态元素属于类 非静态成员属于对象

       10)静态元素中不可以出现this或super关键字(静态成员属于类)

final

     修饰变量        如果在定义变量的时候没有赋初始值,给变量一次赋值的机会

                           一旦变量被存储了一个值,若用final修饰之后,则不允许修改

                           如果final修饰的变量是基本类型,则变量内的值不允许更改

                           如果final修饰的变量是引用类型,则变量的地址不允许更改

      修饰属性      全局变量 存储在堆内存对象空间内,属性用final修饰后,必须给属性赋初值

      修饰方法      方法不可更改,final修饰过的方法,子类继承父类后不能重写

      修饰类本身   final修饰的类不可以其他子类继承

abstract

       修饰方法     用abstract修饰过的方法没有方法体,叫做抽象方法

       修饰类         用abstract修饰过的类叫做抽象类

native

       native修饰的成员方法,表示这个方法是本地方法,java调用的是底层代码。

transient

       序列化的对象包含被 transient 修饰的实例变量时,java 虚拟机(JVM)跳过该特定的变量。

synchronize

        synchronized 关键字声明的方法同一时间只能被一个线程访问。该修饰符可以应用于所有访问修饰符。

volatile

        volatile 修饰的成员变量在每次被线程访问时,都强制从共享内存中重新读取该成员变量的值。而且,当成员变量发生变化时,会强制线程将变化值回写到共享内存。这样在任何时刻,两个不同的线程总是看到某个成员变量的同一个值。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值