龙空技术网

JAVA修饰符(小白必修课)

博学多才的我是汤姆 18

前言:

而今看官们对“在java语言中用什么修饰符定义的类为抽象类”都比较关怀,朋友们都需要剖析一些“在java语言中用什么修饰符定义的类为抽象类”的相关文章。那么小编在网络上收集了一些关于“在java语言中用什么修饰符定义的类为抽象类””的相关内容,希望兄弟们能喜欢,你们快快来学习一下吧!

Java的修饰符主要分为以下两类:

访问修饰符非访问修饰符

访问修饰符

访问修饰符

同类

同包

子类

其他包

public

public使用对象:类、接口、变量、方法

protected

×

protected使用对象:变量、方法。注意:不能修饰类(外部类)

default

×

×

default使用对象:类、接口、变量、方法

private

×

×

×

private使用对象:变量、方法。注意:不能修饰符类(外部类)

非访问修饰符

static 用于创建类方法和变量final 用于完成类,方法和变量的实现abstract 用于创建抽象类和方法synchronized 用于线程transient用于跳过序列化volatile 用于线程1.static修饰符

静态变量:static用于创建独立于类实例的变量。和类的实例数无关,只存在一个静态变量副本。静态变量也称为类变量。局部变量不能声明为static

静态方法:static用于创建独立于类实例的方法。静态方法不能使用作为类的对象的实例变量,静态方法也叫类方法。不引用变量。使用类名+"."及变量或方法的名称来访问类变量或方法。

public class StaticDemo {    private static int count = 0;    protected static int getCount() {        return count;    }    private static void addCount() {        count++;    }    public StaticDemo() {        StaticDemo.addCount();    }    public static void main(String[] arguments) {        System.out.println("Starting with " + StaticDemo.getCount() + " instances");        for (int i = 0; i < 10; ++i) {            new StaticDemo();        }        System.out.println("Created " + StaticDemo.getCount() + " instances");    }}

运行结果:

Starting with 0 instancesCreated 10 instances
2.final修饰符

final变量:只能显示初始化一次,不能重新分配用来引用不同的对象。可以更改对象内的数据。final通常与static一起使用,以使常量成为类变量。

public class TestFinal {    final int value = 1;    // 以下是声明常量的示例:    public static final double PI = 3.1415926;    static final String str = "Hello";    public void changeValue() {        value = 2;   // 会出错,不能重新赋值    }}

final方法:任何子类都不能重写final方法。用final声明方法的目的是不让他人改变。

public class TestFinal{    public final sayHi(){    //方法主体    }}

final类:不能被继承。

public final class TestFinal{  //类主体}
3.abstract修饰符

抽象类

abstract修饰的类不能被实例化。只能继承该类。

abstractfinal不能同时修饰一个类。

抽象类中可以包含非抽象方法。

abstract class Dog {    private int size;    private String name;    public void run(){ //非抽像方法            };    public abstract  void eat();  //抽象方法}

抽象方法

抽象方法是没有任何实现情况下声明的方法。方法由子类实现。

扩展抽象类的任何类都必须实现超类的所有抽象方法,除非子类也是抽象类。

public abstract class Dog {    public abstract  void eat();  //抽象方法}public GermanShepherdDog extends Dog{    public  void eat(){        //实现抽像方法        }}
4.synchronized修饰符

synchronized 修饰方法,保证在同一时刻只能有一个线程执行该代码块。常用于高并发场景需要一次只能访问一个的情况。

public synchornized void getLock(){          }

5.transient修饰符

实例变量标记为transient,表示JVM在序列化包含它的对象时跳过特定变量。

transient包含在创建变量的语句中,位于变量的类或数据类型之前。

public transient lint count=1;
6.volatile修饰符

Java语言提供了一种稍弱的同步机制,即volatile变量,用来确保将变量的更新操作通知到其他线程。当把变量声明为volatile类型后,编译器与运行时都会注意到这个变量是共享的,因此不会将该变量上的操作与其他内存操作一起重排序。volatile变量不会被缓存在寄存器或者对其他处理器不可见的地方,因此在读取volatile类型的变量时总会返回最新写入的值。

  在访问volatile变量时不会执行加锁操作,因此也就不会使执行线程阻塞,因此volatile变量是一种比sychronized关键字更轻量级的同步机制。

public class MyRunnable implements Runnable{    private volatile boolean active;    public void run()    {        active = true;        while (active) // 第一行        {            // 代码        }    }    public void stop()    {        active = false; // 第二行    }}

通常情况下,在一个线程调用 run() 方法(在 Runnable 开启的线程),在另一个线程调用 stop() 方法。 如果 第一行 中缓冲区的 active 值被使用,那么在 第二行 的 active 值为 false 时循环不会停止。

但是以上代码中我们使用了 volatile 修饰 active,所以该循环会停止。

标签: #在java语言中用什么修饰符定义的类为抽象类