static和final可以修饰的对象和其特征

1、final可以修饰:类变量、成员变量、局部变量、方法、类。

1.1、被final修饰的变量:必须直接赋值,并且不再允许在其他地方改值。

1.2、被final修饰的方法:不能被复写。

1.3、被final修饰的类:不能被继承。


2、static可以修饰:成员变量、方法。

2.1、被static修饰的成员变量:成员变量变为类变量,可以在所有的方法中访问。可以被多次重新赋值。

2.2、被static修饰的方法:在静态方法中可以直接调用。在非静态方法、静态方法中,都可以直接调用。不能被子类复写。



3、示例代码:

class Tee{
    final void getInfo(){
        System.out.println("cccc");
    }
    void getName(){
        System.out.println("LiMing");
    }
    static void getHeight(){
        System.out.println("180cm");
    }
}
class Gee extends Tee{
    //    @Override
    //   final void getInfo(){}//getInfo不能被复写,复写方法为final类型
    // @Override   //方法不能复写它的父类
    static void getHeight(){}
}
final class Pee {

}
//class Hee extends Pee{  //不能从final类继承
//
//}


public class TempTest {
    //final可以是局部变量,成员变量,类变量的修饰符.~~~~~对应变量值不可以改.
    //satic可以修饰成员变量,方法,但不能修饰局部变量.~~~~并且静态变量值可以多次被赋值.~~~~静态变量在静态方法,普通方法里面都可以使用.

    //类变量
    static int a=10;
    //成员变量
    final  int b=11;
    //成员变量
    final static int c=12;

    /**
     * 静态方法
     */
    static void test1(){
        a=20;
        //static int d=1;  //static修饰符不能在这里使用
        //b=12;            //不能给final赋值
        final int e=2;//局部变量
        //e=20;      //不能给final赋值
    }

    /**
     * 普通方法
     */
     void test2(){
        a=30;
        final int c=0;
        test1();
    }



    public static void main(String[] args){
        test1();
        System.out.println(a);
        System.out.println(c);

        TempTest test=new TempTest();
        System.out.println(test.b);
    }
}





你可能感兴趣的:(java,nowcoder笔记)