java修饰符

修饰符是用于限定类型以及类型成员申明的一种符号,可用于修饰类、变量和方法,分为访问修饰符和非访问修饰符。访问修饰符控制访问权限,不同的访问修饰符有不同的权限范围,而非访问修饰符则是提供一些特有功能。

访问权限修饰符

访问修饰符有四个,权限从大到小:
public、protected、default、private ,访问范围如下:
public 本类、同包、子类和全局(只要导入包就能访问)
protected 本类、同包和子类
default 本类、同包(当类、方法和变量不添加权限修饰符时,默认使用)
private 本类(类的内部)
父类中定义4种类型的数据
在这里插入图片描述
在这里插入图片描述

非访问修饰符(最常用的为static,final)

static

当编写一个类时,本质上就是在描述该事物的属性和行为,但这些只有创建对象时这些数据才会被分配。有的时候我们希望无需创建对象就能获取数据,且数据独一份,被所有对象共享。
static修饰的变量和方法叫做静态变量和静态方法,也叫类变量/方法,属于类本身。所有实例都能调用静态变量和静态方法。反之,实例变量和实例方法绑定于类的某个实例,只能由实例来调用,不对外共享,因为对象是唯一的。
static注意点:
调用静态变量和静态方法时,只需要类名.静态变量/静态方法。使用对象也可以调用,但这样做不规范。
static能修饰的类只有内部类,也叫作静态内部类,地位等同于外部类的静态变量。
static不能修饰局部变量,因为作用域仅限于所处的块,而static本身的功能相违背且不允许。
在静态方法中,例如main()方法,不能使用this和super关键字来访问实例变量和调用方法,若要调用实例变量,则需要实例化一个对象。
静态方法和类同时加载。

final

final可修饰变量、方法和类,一旦被final修饰,该变量就不能改变值或是改变其引用。编译器会检查代码,试图更改时编译器会报错。
final注意点:
final修饰的方法不能被重写,final修饰的类也不允许被继承,final修饰的类为不可变类。
修饰变量时,都是当成常量来用,通常和static关键字配合使用,而且常量最好使用全大写。

//实例常量伴随对象的创建而生成,运行完成后即被销毁,频繁创建和销毁非常浪费内存空间。
//而静态常量(全局常量)随着类的初始化就存储在JVM开辟的常量池中,使用之后也不会被回收,直到程序结束。
//所以如果有数字或者字符串被多次反复使用时,可以用final static来修饰。

final修饰的优点

final关键字可以提高性能,JVM和Java应用都会缓存final变量。
final修饰后,编译时就进行静态绑定,不需要在运行时在动态绑定。
final变量可以安全的在多线程环境下进行共享,而不需要额外的同步开销。 使用final关键字,JVM会对方法、变量及类进行优化。
final修饰类则是不可变类。不可变类的实例创建后,该实例的内容无法被改变。String是不可变类的代表。
不可变类有很多好处,譬如它们的对象是只读的,可以在多线程环境下安全的共享,不用额外的同步开销等等。

在这里插入图片描述

类修饰符:

public(访问控制符)

将一个类声明为公共类,他可以被任何对象访问,一个程序的主类必须是公共类。

abstract

将一个类声明为抽象类,没有实现的方法,需要子类提供方法实现。

final

将一个类生命为最终(即非继承类),表示他不能被其他类继承。
friendly,默认的修饰符,只有在相同包中的对象才能使用这样的类。

成员变量修饰符:

public(公共访问控制符)

指定该变量为公共的,他可以被任何对象的方法访问。
private(私有访问控制符)指定该变量只允许自己的类的方法访问,其他任何类(包括子类)中的方法均不能访问。

protected(保护访问控制符)

指定该变量可以别被自己的类和子类访问。在子类中可以覆盖此变量。

friendly

如果一个类的成员没有任何权限修饰,那么它门就是缺省包访问权限,用friendly来表示在同一个包中的类可以访问,其他包中的类不能访问。

final

最终修饰符,指定此变量的值不能变。

static(静态修饰符)

指定变量被所有对象共享,即所有实例都可以使用该变量。变量属于这个类。

transient(过度修饰符)

指定该变量是系统保留,暂无特别作用的临时性变量。

volatile(易失修饰符)

指定该变量可以同时被几个线程控制和修改。

方法修饰符 :

public(公共控制符)
private(私有控制符)指定此方法只能有自己类等方法访问,其他的类不能访问(包括子类)
protected(保护访问控制符)指定该方法可以被它的类和子类进行访问。
final,指定该方法不能被重载。
static,指定不需要实例化就可以激活的一个方法。
synchronize,同步修饰符,在多个线程中,该修饰符用于在运行前,对他所属的方法加锁,以防止其他线程的访问,运行结束后解锁。
native,本地修饰符。指定此方法的方法体是用其他语言在程序外部编写的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值