• static 和final


    1、static
           static关键字可以用来修饰类的变量,方法和内部类。static是静态的意思,也是全局的意思,它定义的东西属于全局,与类相关,不与具体实例相关。就是说它调用的时候,只是ClassName.method(),而不是new ClassName().method()new ClassName()不就是一个对象了吗?static的变量和方法不可以这样调用的,它不与具体的实例有关。

    1. class Count {
    2.     private int serialNumber;
    3.     public static int counter = 0; //一个静态变量counter
    4.     public Count() {
    5.         counter++;   //创建Counter的时候递增
    6.         serialNumber = counter;
    7.     }
    8.     public int getSerialNumber() {
    9.         return serialNumber;
    10.     }
    11. }
    12. class OtherClass {
    13.     public int increment() {
    14.         return Count.counter++;//静态的变量不属于任何实例只能直接用类调用
    15.     }
    16. }
    17. public class TestStaticVar {
    18.     public static void main(String[] args) {
    19.         Count[] cc = new Count[10];
    20.         OtherClass o = new OtherClass();
    21.         for (int i=0; i<cc.length; i++) {
    22.             cc[i] = new Count();
    23.             System.out.println("cc["+i+"].serialNumber = "+cc[i].getSerialNumber());
    24.             System.out.println(o.increment());
    25.         }
    26.     }
    27. }

          类的方法中带有static关键字,这个方法就是静态方法。静态方法也是要通过类名,而不是实例访问。子类不能重写父类的静态方法,也不能把父类不是静态的重写成静态的方法。想隐藏父类的静态方法的话,在子类中声明和父类相同的方法就行了。

    1. class GenerealFunction {
    2.     public static int add(int x,int y){
    3.        return x+y;
    4.     }
    5. }
    6. public class UseGeneral {
    7.     public static void main(String[] args){
    8.        //调用时还是用类直接调用
    9.         int c = GenerealFunction.add(19,18);
    10.         System.out.println("结果是"+c);
    11.     }
    12. }

    2、final
           final关键字有三个东西可以修饰的,修饰类,方法,变量。

           a、在类的声明中使用final

            使用了final的类不能再派生子类,就是说不可以被继承了。 

          b、在方法声明中使用final

           被定义为final的方法不能被重写了,如果定义类为final的话,是所有的方法都不能重写。而我们只需要类中的某几个方法,不可以被重写,就在方法前加final了,而且定义为final的方法执行效率要高。

          c、在变量声明中使用final

          这样的变量就是常量了,在程序中这样的变量不可以被修改的。修改的话编译器会报错的。而且执行效率也是比普通的变量要高。final的变量如果没有赋予初值的话,其他方法就必需给它赋值,但只能赋值一次。

  • 相关阅读:
    板邓:mysql navicat设置字段默认时间为当前时间
    板邓:wordpress用户和权限名称详细表
    板邓:jQuery设置和获取HTML、文本和值(转)
    板邓:wordpress自定义用户角色和权限全面解析
    板邓:wordpress给订阅者、投稿者上传图片权限
    七牛云
    redis 基础命令
    yeild 理解
    如何访问父类中私有的属性
    php反射
  • 原文地址:https://www.cnblogs.com/fjsnail/p/3474048.html
Copyright © 2020-2023  润新知