三大修饰符static,final,abstract,接口和抽象类的区别

package com.cityhero.test;

public class ThreeModifier {
    //static静态的
    //        概念:static可以修饰方法和属性,被static修的方法和属性叫静态方法/静态属性,被该类的所有对象共享
    //        使用:类名.方法/属性    对象.方法/属性(编译器会给出警告,告诉你这是一个静态的方法/属性,可以直接类名.方法/属性使用)
    //        static还可以修饰静态代码块,在类加载时,和static修饰的属性/或方法,按照定义的先后顺序,依次进行初始化工作
    //        用途:例如配置文件读取,可以在类加载时执行一次就OK了,提高性能
    //类加载    jvm在第一次使用某个类时,会到classpath下寻找对应的.class文件,读取并保存起来的过程.类加载的时机:new对象,new子类对象,调用static成员
    //        类加载以后,其实是把类的相关信息保存在方法区,包括类的全限定名,方法和方法描述符,字段和字段描述符
    //        类的class访问标志,属性信息等等这个类的信息存储起来.当我们new一个对象的时候,jvm为对象分配的内存空间实际有很多都是指向方法区的引用
    //        在class文件结构中叫常量池的引用,后面会详细讲解.
    
    
    //final最终的
    //        final修饰的变量只能被赋值一次,也叫常量     
    //        final修饰的类不能被继承,如果类被final修饰,则里面的方法都是final的
    //        自然final修饰的方法不能被覆盖
    //        final修饰的类变量,可以在static静态代码块中赋值一次,或者初始化static属性时赋值 
    //        final修饰的实例变量,可以在构造方法中赋值一次,且需要保证所有的构造方法都赋值了,jvm不会为两者赋默认值
    
    //abstract抽象的
    //        abstract可以修饰方法,类
    //        强制使用多态,不能实例化,可以声明引用
    //        子类继承抽象类时,必须实现所有的抽象方法,除非子类又是抽象的
    
    //interface接口
    //            接口是特殊的抽象类
    //            类时单继承,接口是多继承
    //            都不可以实例化
    //            接口的方法都是抽象的
    //            ....
}