java中修饰符的使用场景与注意事项

  在java编程语言里,修饰符是出现在类的定义、属性、方法、构造器、初始化块等定义时的修饰。修饰符有分为访问修饰符和可选修饰符,他们基本都是关键字,有一个例外,就是访问修饰符除了public/protected/private之外还有一个默认访问修饰符,共4种。而可选修饰符则有abstract/const/default/final/native/static/strictfp/synchronized/transient/volatile。

 


修饰符


修饰场景



成员方法


构造方法


成员变量


局部变量


abstract(抽象的)







static (静态的)







public(公共的)







protected(受保护的)






private(私有的)







synchronized(同步的)







native(本地的)







transient(暂时的)







volatile(易失的)







final(不要改变的)







无访问修饰符(默认,同包访问)





 -

  

  由上表可以明显地看出各修饰符可出现的位置。

  const是一个C语言的关键字,它限定一个变量不允许被改变。使用const在一定程度上可以提高程序的安全性和可靠性。java中保留了此关键字,但是编者并没有发现它在java中的用法。另外,在观看别人代码的时候,清晰理解const所起的作用,对理解对方的程序也有一些帮助。

  下面将按位置,对修饰符进行分析:

  1.

  类一般情况下只有public/abstract/final和默认修饰符是被允许的,但是有一个例外,那就是在内部类中,是允许static修饰的。

  public:表示该类可以被任意位置的类访问,默认(不写)表示该类被同包中的其他类访问。

  abstract:表明该类为抽象类,不能被实例化。应注意类为abstract修饰时,不要求其中有抽象abstract方法,而类中有抽象方法时,该类就必须成为抽象类。

  final:表明该类为最终类,不能被继承(扩展)。应注意类为final修饰时,依然可以继承其他类和实现接口。

  static:外部类是不允许static修饰的,但是内部类却允许:class Outter{ static class Inner{} } 此时 可以直接通过外部类的类名产生一个内部类的实例:new Outter.Inner(); 而不需要先产生一个外部类的实例 class Outter{ class Inner{} },

  Outter outter = new Outter();
  outter.new Inner();

  当内部类不是static时,只能通过外部类的实例产生内部类对象。

  2.成员变量

  一个类的成员变量的声明必须在类体中,而不能在方法中,方法中声明的是局部变量。

  访问修饰符可以是4种中的任意一种。

   static:类变量:一个类所拥有的变量,该类型的变量与类的实例对象无关,不管类创建了多少对象,系统仅在第一次调用类的时候为类变量分配内存,所有对象共享该类的类变量,因此可以通过类本身(类名)或者某个对象来访问类变量。

  final:常量。成员变量定义时一般可以不初始化(给变量赋初值),但是final修饰成员变量时,必须在定义时就初始化,如: final int age = 20;这里的“=20”不能不写,否则编译就会报错。

  volatile:声明一个可能同时被并存运行的几个线程所控制和修改的变量。

  transient:声明一个该值不能被序列化的变量(对象被序列化后,该变量仍然存在,值以该类型的默认值来保存,如整型为0,String类型为null,boolean类型为false)。

  3.方法

  访问修饰符可以是4种中的任意一种。

  abstract:抽象方法:只有声明部分,方法体为空,具体在子类中完成。

  static:类方法、静态方法:

    1) 调用时,可以直接使用类名调用,也可以类的某个实例对象名调用

    2)不能被单独对象拥有,属于整个类共享。

    3) 不能处理非static修饰的成员变量。

  final:最终方法,不能被子类重写的方法。

  native:本地方法,表示用其他语言书写的特殊方法,包括C,C++,FORTRAN,汇编语言等。

  synchronized:多线程调用时同步,当此方法被调用时,其他线程不能够调用该方法,直到该方法返回,用于避免在多线程操作时,数据的结果出现不一致。

  4.局部变量

  只能有final修饰,不能够有访问修饰符修饰。

  5.接口

  接口的访问修饰符只能有public/默认不写(同包) 两种,其可选修饰符只能为abstract(abstract也可以不写,接口默认即为抽象)。

  接口中的变量只能为 public static final 联合修饰的公共静态常量(这三个修饰符可以不写,接口中变量为默认有这三个修饰符,此外 final 类型的变量必须 在定义时初始化(赋初值),这点在上文的【变量】中已经说过 )

  接口中的方法访问修饰符只能为public,一般情况下可选修饰符为abstract,即接口中的方法为默认抽象方法,不能有方法体。

  此外,还可以有strictfp/static/default修饰(其中static和default只能二者选其一,strictfp必须与static和default中的一个配合使用)

  static:静态方法 必须有方法体。

  default:修饰的方法 必须有方法体。

  strictfp:strict floatpoint 精确浮点

  注意:类与接口的关系为多实现,当类实现的多个中有同名、同参、同返回类型的 抽象方法或者default方法时(包括两个都为抽象、两个都为default 和 一个为抽象一个为default ),实现类必须重写该方法。

  而接口中的方法为静态(static)方法时,可以直接用接口名调用该方法,与实现类无关。实现类可以有与之相同的静态或非静态方法。

6.构造方法

  构造方法前不能有返回类型,但是有一个例外:可以有一个void返回类型,一般默认不写,但是写上这个void(无返回值)修饰也不会有错。

  

时间: 2024-11-02 19:00:14

java中修饰符的使用场景与注意事项的相关文章

java中修饰符及其用法

1. java中的修饰符 a. 权限修饰符 private,默认的,protected,public b. 状态修饰符 static,final c. 抽象修饰符 abstract 2. 类修饰符 public(访问控制符),将一个类声明为公共类,他可以被任何对象访问,一个程序的主类必须是公共类,一个.java文件中只能有一个public类,而且文件名必须与该类相同. 默认的,把一个类声明为默认的,可以被同一个包中的其他类使用. abstract,将一个类声明为抽象类,抽象类中可以有抽象方法,也

java类中修饰符public,protected等访问权限总结

public   protected  ……   private       类    +          +         +       +       包    +          +         +      继承   +         +      其他   + java类中修饰符public,protected等访问权限总结

java类修饰符

java的修饰符有:权限修饰符:public.protected.default.private                修饰符:abstract.static.final public   使用对象:最广,类.接口.变量.方法    protected使用对象:变量.方法 注意:不能修饰类(外部类)    default  使用对象:类.接口.变量.方法.(即缺省,什么也不写)    private  使用对象:变量.方法 注意:不能修饰类(外部类) abstract使用对象:类.接口.

java常见修饰符总结

1.访问修饰符:public 对外公开  所有是类都能访问 protected 受保护的 子类及其同一个包中的类可以访问 默认的:没有访问修饰符,只向同一个包中的类公开 private : 私有的 只有类本身可以访问,不对外公开 2.abstract :可以用来修饰类和成员方法 A:用该修饰符修饰的类表示抽象类,抽象类位于继承树的抽象层,该类不能被实例化,即不允许创建抽象类本身的实例 B:用该修饰符修饰的方法表示抽象方法,该方法没有方法体,抽象方法是用来表述系统具有什么功能,但不提供具体的实现.

Java的修饰符

转自:http://blog.csdn.net/manyizilin/article/details/51926230#L42 修饰符: 像其他语言一样,Java可以使用修饰符来修饰类中方法和属性.主要有两类修饰符: 访问修饰符:default, public , protected, private 非访问修饰符:final, abstract, strictfp 修饰符一般使用在一个语句的前端,例: [html] view plain copy public void Pig{ int a 

java访问修饰符

了解面向对象思想的同学们,都知道"封装"这一基本特征,如何正确运用访问修饰符,恰恰能体现出封装的好坏. java访问修饰符有四个: 1)public:访问权限最高,其修饰的类.类变量.方法所有类都可见. 2)protected:其修饰的类.类变量.方法在同包中(包括同类)可见,不同包的子类可见. 3)default:默认修饰符,即在定义类.类变量或方法时不加任何修饰符.其仅在同包(包括同类)中可见. 4)private:最低访问权限,其修饰的类.类变量和方法仅在本类中可见. ps:pr

C#和JAVA 访问修饰符

JAVA ----------------------------------------------- 访问修饰符        描述 ----------------------------------------------- private            只能在本类内使用(可见) 不写修饰符    表示该成员只能在同一个包内才能互相访问 protected        也是同包内访问,区别上面的地方在于:除了同包,其他包的子类也可以访问 public             

Java高手真经_编程基础卷——读书笔记(9)——Java类修饰符

Java修饰符 一.简述 访问控制修饰符:public .默认无修饰符.private.protected 其他修饰符:abstract.static.final.native public:意思是公开的,使用范围最广 默认无修饰符,什么也不写:在同一个包内可见 private :私有的 protected:受保护的 abstract:抽象的 static:静态的 final:最终的 native:本地的 sysnchronized:同步 以上是修饰符子字面意思,但其真实的意义也差不多少.下面就

Java访问修饰符(访问控制符)

Java 通过修饰符来控制类.属性和方法的访问权限和其他功能,通常放在语句的最前端.例如: public class className { // body of class } private boolean myFlag; static final double weeks = 9.5; protected static final int BOXWIDTH = 42; public static void main(String[] arguments) { // body of meth