Java 修饰符总结

开发工具与关键技术:Java、myEclipse
作者:吴晓佩
撰写时间:2019年6月6日

在java编程语言里,修饰符是出现在类的定义、属性、方法、构造器、初始化块等定义的修饰。修饰符基本上都是关键字。
Java中有四个访问修饰符public、private、friendly(在代码中的呈现就是不写修饰符)、protected。如下是该访问修饰符的访问范围。
在这里插入图片描述
按位置对修饰符进行分析:
类:
类一般情况下只有public、abstract、final、和friendly(默认修饰符)对其进行修饰。但如果该类是内部类的话,还可以允许static对其进行修饰。
public(访问控制符):将一个类声明为公共类,他可以被任何对象访问,一个 程序的主类必须是公共类。
friendly(默认的修饰符):只有在相同包中的对象才能使用这样的类。
abstract:将一个类声明为抽象类,没有实现的方法,需要子类提供方法实现。
final:将一个类生命为终(即非继承类),表示他不能被其他类继承。
static:外部类不允许static修饰,但是内部类却可以允许static对其进行修饰,静态内部类不能访问外部的非静态成员(即静态变量和静态方法),而非静态内部类则可以访问外部类的所有成员(方法、属性)。
在这里插入图片描述
成员变量修饰符:
成员变量的理解:成员变量声明必须在类体中,而不能在方法中,方法中声明的是局部变量。
public(公共访问控制符),指定该变量为公共的,他可以被任何对象的方法访问。
private(私有访问控制符)指定该变量只允许自己的类的方法访问,其他任何类 (包括子类)中的方法均不能访问。
protected(保护访问控制符)指定该变量可以别被自己的类和子类访问。在子类 中可以覆盖此变量。
friendly ,在同一个包中的类可以访问,其他包中的类不能访问。
final:终修饰符,指定此变量的值不能变。final修饰成员时,必须在定义时就初始化,否则程序会报错。
在这里插入图片描述
static(静态修饰符)指定变量被所有对象共享,即所有实例都可以使用该变量。 变量属于这个类。一个类所拥有的变量,该类型的变量与类的实例对象无关,不管创建了多少的对象,系统仅在第一次调用类的时候为类变量分配内存,所有对象共享该类变量,因此可以通过类本身(类名)或者某个对象来访问类变量。
volatile:声明一个可能同时被运行的几个线程所控制和修改的变量。(不常使用)
transient:声明一个该值不能被序列化的变量(对象被序列化后,该变量仍然存在,值以该类型的默认值来保存,如类型为0,String类型为null,boolean类型为false)(不常使用)。

方法修饰符:
public(公共控制符):指定该方法可以从所有类访问
private(私有控制符):指定此方法只能有自己类等方法访问,其他的类不能访问 (包括子类)
protected(保护访问控制符):指定该方法可以被它的类和子类进行访问。 final,指定该方法不能被重载。
abstract:抽象方法,只有声明部分,方法体为空,具体在子类中完成。
Static:指定不需要实例化就可以激活的一个方法。
(1) 调用时可以直接使用类名调用,也可以在某个实例对象中完成。
(2) 不能被单独对象拥有,属于整个类共享。
(3) 不能处理非静态的成员变量。
final:最终方法,不能被子类重写的方法。
native:本地修饰符。指定此方法的方法体是用其他语言在程序外部编写的。
synchronize:步修饰符,在多个线程中,该修饰符用于在运行前,对他所属的 方法加锁,以防止其他线程的访问,运行结束后解锁。

局部变量:
只有final修饰符,没有访问修饰符。
接口
接口的访问修饰符只有public、friendly(默认不写)两种,其可选修饰只能为abstract
(abstract也可以不写,接口默认即为抽象修饰)。
接口的变量只能为public static final联合修饰的公共静态常量,可以省略不写。
接口中的方法访问修饰符只能为pubic,一般情况下可选修饰符为abstract,接口空
方法默认为抽象方法,不能有方法体。此外,还可以有static、strictfp、default修饰(static
和default只能二者选其一, strictfp(不常用) 必须与static或default(不常用)中的一个
来搭配使用)。
Static:静态方法,必须有方法体。
Default:必须有方法体。
Strictfp:strict floatpoint精确浮点。
注意:类与接口的关系为多实现,当类实现的多个中有同名、同参、同返回类型的抽象方法时(包括两个都为抽象、两个都为default和一个为抽象一个为default)、实现类必须重写该方法。而接口中的方法为静态(static)方法时,可以直接用接口名调用该方法,与实现类无关。实现类可以有与之相同的静态或非静态方法。

初始化块:
static(可选),使用static修饰的初始化块被称为静态代码块,静态初始化块负责对类进行初始化,因此类初始化块是在类初始化阶段就执行。因为静态块是在类的初始化阶段完成的,因此在创建某个类的第二个对象时,该类的静态块就不会执行了,静态块不能访问非静态成员。

使用修饰符的注意点:
1、 一个类包含了抽象方法,这个类必须用abstract来修饰,但是一个abstract类不一定非要包含抽象方法。
2、 抽象方法必须通过子类来实现,所以它不可以用static修饰。也不可以用final来修饰。
3、 非静态的内部类不能包含静态方法和成员。
4、 静态的内部类可以用final或abstract修饰,但两者不可以同时用。
5、 静态方法不能被继承,所以不可以是抽象的。
6、 如果一个类已经是final修饰的,在给里面的方法加上final是没有意义的。
7、 Final和static同时用来修饰方法的话,因为static不存在继承,所以这时候final是多余的。
8、 抽象类意味着必须要有继承,所以abstract和final任何时候都不可以同时使用。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值