美文网首页java面试题
final , static , this , super 四个

final , static , this , super 四个

作者: superNeil | 来源:发表于2020-08-09 18:15 被阅读0次

    final , static , this , super 四个关键字

    final:变量、方法、类。

    1.final修饰一个类时,表明这个类不能被继承

    1. final修饰的方法表示此方法已经是“最后的、最终的”含义,亦即此方法不能被重写(可以重载多个final修饰的方法)

    注意:因为重写的前提是子类可以从父类中继承此方法,如果父类中final修饰的方法同时访问控制权限为private,将会导致子类中不能直接继承到此方法,因此,此时可以在子类中定义相同的方法名和参数,此时不再产生重写与final的矛盾,而是在子类中重新定义了新的方法。(注:类的private方法会隐式地被指定为final方法。)

    1. final成员变量表示常量,只能被赋值一次,赋值后值不再改变。

    static关键字

    主要有以下四种使用场景:
    1.修饰成员变量和成员方法:被static修饰的成员属于类,不属于单个这个类的某个对象,被类中所
    有对象共享,可以并且建议通过类名调用。被static 声明的成员变量属于静态成员变量,静态变量
    存放在Java内存区域的方法区。调用格式:类名.静态变量名类名.静态方法名()
    2.静态代码块:静态代码块定义在类中方法外,静态代码块在非静态代码块之前执行(静态代码块一-> 非
    静态代码块一>构造方法)。 该类不管创建多少对象, 静态代码块只执行一-次.
    3.静态内部类(static修饰类的话只能修饰内部类) :静态内部类 与非静态内部类之间存在一个最
    大的区别:非静态内部类在编译完成之后会隐含地保存着-一个引用,该引用是指向创建它的外围
    类,但是静态内部类却没有。没有这个引用就意味着: 1. 它的创建是不需要依赖外围类的创建。2
    它不能使用任何外围类的非static成员变量和方法。
    4.静态导包(用来导入类中的静态资源,1.5之 后的新特性):格式为: import static 这两个关键字
    连用可以指定导入某个类中的指定静态资源,并且不需要使用类名调用类中静态成员,可以直接使
    用类中静态成员变量和成员方法。

    this 关键字

    this关键字用于引用类的当前实例。

    super关键字

    super关键字用于从子类访问父类的变量和方法。

    使用this和super要注意的问题:
    ●在构造器中使用super () 调用父类中的其他构造方法时,该语句必须处于构造器的首行,否则
    编译器会报错。另外, this调用本类中的其他构造方法时,也要放在首行。
    ●this、 super不能用在static方法中。

    简单解释一下:
    被static修饰的成员属于类,不属于单个这个类的某个对象,被类中所有对象共享。而this代表对本类
    对象的引用,指向本类对象;而super代表对父类对象的引用,指向父类对象;所以,this和super是
    属于对象范畴的东西,而静态方法是属于类范畴的东西。

    相关文章

      网友评论

        本文标题:final , static , this , super 四个

        本文链接:https://www.haomeiwen.com/subject/vtfrdktx.html