【java学习】修饰符 - Go语言中文社区

【java学习】修饰符


1,访问权限:public, private, protected,friendly

1)默认权限

不写public, private, protected时,默认为friendly(default权限、package权限、同包权限)

2)区别

区别

2,访问控制

1)类(class)

final―终态类,表示该类不能被继承
abstract―抽象类,不能新建对象

2)变量(variable)

①static―静态变量

被类的所有实例共享。静态变量随着类的加载而加载,所以也被称为类变量
对于整型静态变量,如果没有赋初值,则默认为0。

static修饰的变量可以在定义时初始化,也可以在静态代码块中赋值(不可在构造方法中赋值)。

②final―常量,定义后不能修改

如果是引用类型,final只保证这个引用所引用的地址不会改变,即一直引用同一个对象,但这个对象完全可以发生改变。

final修饰的变量可以在定义时初始化,也可在构造方法中赋值。

③transient―告诉编译器,在类对象序列化的时候,此变量不需要持久保存

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

详情查看:【java学习】多线程并发

成员变量——定义在类中的变量,可以不进行初始化,Java会自动进行初始化,如果是引用类型默认初始化为null,如果是基本类型例如int则会默认初始化为0 ;
局部变量——定义在方法中的变量,必须要进行初始化,否则不同通过编译。

3)方法(method)

static―静态方法,并不需要创建类的实例就可以访问静态方法
final―常方法,所有子类不能覆盖该方法,但可以重载。(final修饰方法中的参数,称为最终参数)
abstract―抽象方法,在抽象类中没有实现的方法
native―本地方法,java调用非java代码的接口。实现由非java实现

4)接口(interface)

接口中的变量总是需要定义为“ public static final 接口名称”,但可以不包含这些修饰符,编译器默认如此。
接口中的方法只能使用public abstract修饰符。

3,static

1)静态变量

被类的所有实例共享。

对于整型静态变量,如果没有赋初值,则默认为0。

2)静态代码块

public class Test{

    static int a;//静态整型,默认为0.
    //静态语句块
    static{
       int x=5;//局部变量,静态代码块执行完后,即销毁。
       a=3;//全局变量
    }
    static int x,y;//x不受上述局部变量的影响,初始值为0.
}

在类被加载的时候执行且仅会被执行一次,一般用来初始化静态变量和调用静态方法。

执行顺序(优先级从高到低):静态代码块 > mian方法 > 构造代码块 > 构造方法。

3)静态方法

并不需要创建类的实例就可以访问静态方法。

①限制(main方法同理)

A,它们仅能调用其他的static 方法
B,它们只能访问static数据
C,它们不能以任何方式引用this 或super(因为this是与实例相关的,super 与继承有关)

②null调用

   private static void testMethod(){
        System.out.println("testMethod");
    }
    public static void main(String[] args) {
        ((test4)null).testMethod();//输出testMethod
    }

此处是类对方法的调用,不是对象对方法的调用。
方法是static静态方法,直接使用”类.方法”即可,因为静态方法使用不依赖对象是否被创建。
null可以被强制类型转换成任意类型(不是任意类型对象),于是可以通过它来执行静态方法。

如果testMethod为非静态的方法,则会报错NullPointerException。
对于非静态方法,用”对象.方法”的方式,必须依赖对象被创建后才能使用,若将testMethod()方法前的static去掉,则会报 空指针异常 。

版权声明:本文来源CSDN,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/sunshinetan/article/details/78407846
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。
  • 发表于 2020-02-02 19:26:59
  • 阅读 ( 1039 )
  • 分类:

0 条评论

请先 登录 后评论

官方社群

GO教程

猜你喜欢