static.abstract.synchronized

来源:互联网 发布:信用卡代办软件 编辑:程序博客网 时间:2024/05/21 17:10

static : 用来声明静态方法,静态方法可以被类及其对象调用;

abstract:用来声明抽象方法,抽象方法没有方法体,不能被直接调用,必须在子类overriding后才能使用;

abstract的method 不可以是static的,因为抽象的方法是要被子类实现的,而static与子类没有关系!在程序中任何变量或者代码都是在编译时由系统自动分配内存来存储的,而所谓静态就是指在编译后所分配的内存会一直存在,直到程序退出内存才会释放这个空间,也就是只要程序在运行,那么这块内存就会一直存在.
final : 用final修饰一个类就表明这个类不能被继承,对于一个final变量,如果是基本数据类型的变量,则其数值一旦在初始化之后便不能更改
synchronized: 应该是作用在一个具体的方法上才有意义,用来修饰一个方法或者一个代码块的时候,能够保证在同一时刻最多只有一个线程执行该段代码
volatile : 修饰的成员变量在每次被线程访问时,都强迫从共享内存中重读该成员变量的值。而且,当成员变量发生变化时,强迫线程将变化值回写到共享内存。
线程:就相当于程序有两个main函数同时运行

native:表示该方法要用另外一种依赖平台的编程语言实现的,不存在着被子类实现的问题,所以,它也不能是抽象的,不能与abstract混用。


1

static final public synchronized 可以混用 而且顺序不限

2

abstract 只能与public或protected连用,不能用default或private 也不能与static final  synchronized中的任意一个连用

 

原因:

abstract要继承(多态)

但static的是编译期绑定,拒绝多态

synchronized没有继承性,父类加锁 子类默认不加锁 ,所以加了synchtonizd也没用

final本身就是阻止重写的


原创粉丝点击