美文网首页
Java中的控制符修饰符总结

Java中的控制符修饰符总结

作者: LazzMan | 来源:发表于2019-03-07 14:27 被阅读0次

类修饰符:

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

friendly(默认访问控制符)只有在相同包中的对象才能使用这样的类。

abstract (抽象修饰符)将一个类声明为抽象类,没有实现的方法,需要子类提供方法实现。

final (最终修饰符)将一个类生命为最终(即非继承类),表示他不能被其他类继承。


成员变量修饰符:

对于成员变量,子类与父类之间没有重写或重载的关系,只有能否访问、继承的关系,子类如果也定义了相同的变量,子类方法会优先读取子类定义的变量,子类没有重定义变量,则会去访问父类的变量。

public(公共访问控制符),指定该变量为公共的,他可以被任何对象的方法访问。

private(私有访问控制符)指定该变量只允许本类的方法访问,其他任何类(包括子类)中的方法均不能访问。

protected(保护访问控制符)指定该变量可以被本类和子类访问。在子类中可以覆盖此变量。

friendly(默认访问控制符) ,在同一个包中的类可以访问,其他包中的类不能访问。

final (最终修饰符)指定此变量的值不能变。

static(静态修饰符)指定变量被所有对象共享,即所有实例都可以使用该变量。变量属于这个类。

transient(过度修饰符)告诉编译器,在类对象序列化的时候,此变量不需要持久保存。

volatile(易失修饰符)保证了用volatile修饰的变量对所有线程的可见性,volatile 修饰的成员变量在每次被线程访问时,都强制从主内存中重新读取该成员变量的值。而且,当成员变量发生变化时,会强制线程将变化值回写到主内存。

volatile不能解决数据竞争问题(共享数据的线程安全问题)

/**
 * 演示volatile不能解决数据竞争问题,只能保证变量可见性。
 * <pre>
 * count++的字节码层面:
 *  getstatic        //读取静态变量(count)volatile保证所有线程再这一步读取到的值是主内存的最新值,但由于count++计算并不是原子操作(原子操作是指不会被线程调度机制打断的操作;这种操作一旦开始,就一直运行到结束,中间不会有任何 context switch (切换到另一个线程)),还是会发生线程安全问题
 *  iconst_1        //定义常量值 1
 *  iadd               //count增加1
 *  putstatic        //把count结果同步到主内存
 * </pre>
 *
 * @author nodcat
 */
public class VolatileDemo {

    public volatile static int count = 0;

    public static void main(String[] args) throws InterruptedException {

        for (int i = 0; i < 10; i++) {
            new Thread(() -> {
                try {
                    Thread.sleep(1);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
                for (int j = 0; j < 100; j++) {
                    count++;
                }
            }).start();
        }

        Thread.sleep(2000);
        System.out.println("count=" + count);

    }

}

方法修饰符:

public(公共控制符)指定方法可以从所有类访问。子类可以访问、继承、重载、重写该方法。

private(私有控制符)指定此方法只有本类的方法能访问,其他的类不能访问(包括子类)。子类无法访问该方法,自然也无法继承、重载该方法,对于子类不可见,但子类可以自己定义相同签名的方法。

protected(保护访问控制符)指定该方法可以被本类和子类进行访问,在子类中可以重写(覆盖)此变量。子类可以访问该方法,自然也可以继承、重载、重写该方法。

final (最终修饰符)指定该方法不能被重写(覆盖)。子类可以访问该方法,自然也可以继承、重载该方法,但无法重写该方法。

static(静态修饰符)指定不需要实例化就可以调用的方法。

abstract(抽象修饰符)指定该方法是一个抽象方法,所在的类必须是抽象类,需要由子类实现该方法。

synchronized(同步修饰符) 如果声明一个方法时,在前面加上关键字synchronized,那么这个方法就只能由一个线程运行。只能由一个线程运行是每次只能由一个线程运行的意思,并不是说仅能让某一特定线程运行。这种方法称为synchronized方法,有时也称为同步方法。

native(本地修饰符)指定此方法的方法体是用其他语言在程序外部编写的。

相关文章

  • java修饰符

    java中的类修饰符、成员变量修饰符、方法修饰符。 类修饰符: public(访问控制符),将一个类声明为公共类,...

  • Java中的控制符修饰符总结

    类修饰符: public(公共访问控制符) 将一个类声明为公共类,他可以被任何对象访问,一个程序的主类必须是公共类...

  • java中修饰符的用法

    java中可以使用访问控制符来保护对类、变量、方法和构造方法的访问。其类别可分为访问控制修饰符和非访问修饰符 访问...

  • Java--封装的实现

    封装的实现-使用访问控制符 Java是使用“访问控制符”来控制哪些细节需要封装,哪些细节需要暴露的。Java中4种...

  • Java面向对象(OOP)知识点精华

    1,抽象,继承,封装,多态是java面向对象程序设计的四个核心特点。 2,类(class)前的修饰符分为访问控制符...

  • 专业课笔记

    一、简要叙述什么是访问控制符,列出java中的访问控制符,并说明各个控制符的控制权限。 访问控制符是一组限定类、域...

  • Java知识之修饰符

    Java中的修饰符 Java中的修饰符主要分为两类: 访问控制修饰符 非访问控制修饰符 访问控制修饰符分: pub...

  • Android开发教程之java修饰符,运算符,条件表达式

    一、java访问控制修饰符 使用访问控制符来保护对类、方法、变量的访问(就是控制类对象在哪里可以使用,从而类对象的...

  • 访问控制符和继承基础

    访问控制符 public, private, protected都是可见性修饰符:其中public, privat...

  • Java访问控制符

    Java访问控制符的访问权限

网友评论

      本文标题:Java中的控制符修饰符总结

      本文链接:https://www.haomeiwen.com/subject/zwjcpqtx.html