为了账号安全,请及时绑定邮箱和手机立即绑定

Java非访问修饰符

标签:
Java

一、什么是Java非访问修饰符?

不用于控制类、成员变量、方法访问权限的一些特定功能标识符。例如:static、final、abstract、synchronized、transient等。本手记主要记录上述四个功能标识符。

二、具体标识符。

1、static

类变量 static typeName var;

类方法 static returnValue method;

static修饰的变量和方法表示属于类本身,不需要通过具体的对象去访问,只需要通过类名.成员变量、类名.成员方法访问。

public class JavaStatic {
    
    private static int age;
    private static String content;
    private static boolean flags;
    private static double salary;
    private static Long time;
    private int num;
    
    public static int testStatic(){
        //静态方法中变量必须为静态的
        //num++;
        age++;
    }

    public static void main(String[] args) {
        //static修饰的变量和方法不需要通过new对象实现调用,直接通过类;类名(可省略)来访问
        System.out.println(JavaStatic.age+":"+JavaStatic.content+":"+
        JavaStatic.flags+":"+salary+":"+testStatic());
    }
    
}

2、final

可以修饰类名、方法、成员变量,不能被修改是最终的。

final修饰类时,这个类不能被继承;final修饰成员变量和方法时,子类不能修改父类的变量,不能

override重写父类方法。

public class TestJavaDecorationVar {
    private JavaDecoration javaDecoration;

    public static void main(String[] args) {

    }
}

https://img1.sycdn.imooc.com//5c46bef20001f02016420480.jpg

3、abstract

修饰类名和方法,表示抽象类和抽象方法。为了方便后续类对此抽象类进行扩展!

public abstract class JavaAbstract {
    
    private int age;
    private String name;
    
    public void say(){
        System.out.println(1);
    }
    
    public abstract void toDo();
}
public class TestJavaAbstract extends JavaAbstract {
    @Override
    public void say() {
        super.say();
    }

    @Override
    public void toDo() {
        System.out.println("重写抽象类中未定义的抽象方法");
    }
}

4、synchronized(用于多线程编程)

synchronized修饰的方法,在同一时间只能被一个线程访问。

public class JavaSynchronized {
    //如何限制timeStart()方法在同一时间只有一个线程可以访问。
    //使用synchronized来修饰方法***
    public synchronized void timeStart(){
        System.out.println("do it");
    }
}

5、transient

public class JavaTransient implements Serializable {
    
    //如何自动创建serialVersionUID 
    // command+,inspections 勾选
    private static final long serialVersionUID = -6730851565424759072L;
    private int age;
    private String name;
    //加上transient之后,message变量不会persist
    transient private String message;

}

6、volatile

保证N条线程在访问同一个变量时,看到的是同一个值。

public class JavaVolatile implements Runnable {

    private volatile int age;
    @Override
    public void run() {
        System.out.println(">>>>>>>");
    }
    
}




点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消