zoukankan      html  css  js  c++  java
  • Java关键字之abstract、final、static用法

    abstract即抽象的,可以修饰类、方法;

      修饰类:当有一个方法为抽象方法时,这个类就是抽象类,抽象类不能被new,它是一个不完整的类。

      修饰方法:这个方法就是抽象的,即只能方法的定义,没有方法的实现。

    final:即最终的,可以修饰类、属性、方法;

      修饰类:这个类不能被继承

      修饰属性:这个属性值不可以被改变

      修饰方法:这个方法为最终方法,不能被重写(覆盖)

      final、finally、finalize的区别?

        final用于声明类、属性、方法;表示属性不可变、方法不可覆盖、类不可继承。

        finally是异常处理语句的一部分,表示总是执行。

        finalize是object的一个方法,在垃圾收集器执行时会调用对象的这个方法,供垃圾收集时其他资源的回收。

    static:静态修饰符,用于修饰成员和成员函数,可以直接被类名调用。

      修饰类:静态内部类

      修饰属性:这个属性就是静态属性(静态变量|类变量)

        静态变量属于类,只要静态变量所在的类被加载,这个静态变量就会被分配空间,在内存中只有一份,所有对象共享这个静态变量。使用有二种方式,一个是类名.静态变量,还有一种是对象.静态变量。特别注意:不能在方法体中定义静态变量。VS 实例变量属于类,只有对象创建后,实例变量才会分配空间。

      修饰方法:这个方法就是静态方法(类方法)

        静态成员方法属于类,不需要创建对象就可以使用。而非静态方法属于对象,只有在对象创建出来以后才可以被使用。静态方法里面只能访问所属类的静态成员变量和静态成员方法。

        注意:静态方法不能直接调用非静态方法;成员方法可以直接调用静态方法

      修饰块:静态代码块经常被用来初始化静态变量,会在类加载时执行的一段代码块,并且只执行一次(静态代码块)。

      特点:

        随类的加载而加载,先有静态,之后有对象产生;

        被所有对象所共享;

        可以直接被类名调用;

        静态变量不能直接调用成员变量;

    面试问题:为什么abstract不能与private、final、static类共存?

      abstract修饰的类必须被继承,修饰的方法应该被重写;

      final修饰的类,属性、方法不可以被更改,因此修饰的方法不能被重写;

      private修饰的类只能是内部类,修饰的属性、方法只能在本类内部调用,重写的方法不能访问这些方法和属性;

      static修饰的方法是静态的,可以被类所调用,但abstract修饰的方法是抽象的,没有方法体不能被直接调用,需要通过类的继承或接口实现来重写抽象方法后才能使用。

  • 相关阅读:
    在django中,执行原始sql语句
    Django的select_related 和 prefetch_related 函数优化查询
    Django -- settings 详解
    Django-models的字段类型
    ORM
    django-response对象
    spark集群进入 bin 下面目录./spark-shell 出现Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
    Hbase启动的时候出现:[RpcServer.handler=28,port=60000] ipc.RpcServer: RpcServer.handler=28,port=60000: exiting,master.HMasterCommandLine: Master exiting
    c++实现写一个函数,求2个整数的和,要求在函数体内不得使用+,-* /
    nutch二次开发环境搭建
  • 原文地址:https://www.cnblogs.com/HuiH/p/11652732.html
Copyright © 2011-2022 走看看