final、static关键字

Final

  定义

     在实际开发中,有些方法不能直接覆盖掉,不想让子类重写父类的方法,那么就引出final关键字(可以修饰类,变量,成员方法)。

  基本用法

    final可以修饰类,但是该类不能被继承,但可以继承其他类。

    final可以修饰变量(成员变量,局部变量),(两种方法:一直接赋值,二用构造方法)但是该变量此时变成了一个常量。

    final可以修饰成员方法,但是该方法不能被重写,但可以被继承。

    final 修饰局部变量时,可以先定义使用时再赋值。

    final 不能修饰接口、抽象类、抽象方法。

    final修饰基本数据类型的变量时,必须赋予初始值且不能被改变,修饰引用变量时,该引用变量不能再指向其他对象(地址改变不了但可以修改其内容)。

    final也可以声明方法。方法前面加上final关键字,代表这个方法不可以被子类的方法重写。如果你认为一个方法的功能已经足够完整了,子类中不需要改变的话,你可以声明此方法为final。final方法比非final方法要快,因为在编译的时候已经静态绑定了,不需要在运行时再动态绑定。

  应用实例:

1 class Fu {
2     // final修饰的方法,不可以被覆盖,但可以继承使用
3     public final void method1(){}
4     public void method2(){}
5 }
6 class Zi extends Fu {
7     //重写method2方法
8     public final void method2(){}
9 }

static

  定义

    用来修饰的成员变量成员方法,被修饰的成员是属于类的,而不是单单是属于某个对象的。也就是说,既然属于类,就可以不靠创建对象来调用了。

  static修饰成员变量

    当 static 修饰成员变量时,该变量称为类变量。该类的每个对象都共享同一个类变量的值。任何对象都可以更改该类变量的值,但也可以在不创建该类的对象的情况下对类变量进行操作。

    类变量:使用 static关键字修饰的成员变量。

      1、定义格式:

static 数据类型 变量名;
例如
static String name;

      2、特点:

        被static修饰的成员变量会变成静态变量静态变量不单单仅仅只是属于某一个对象的,而是属于类的,所以静态变量会被该类的所有对象共享,也就是说所有该类的对象使用的是同一份数据

      3、静态成员变量的访问方式:

        对象名.静态成员变量名

        类名.静态成员变量名   推荐

  静态方法

    static修饰成员方法

      1.格式:

        其实就是在定义方法的时候,在返回值类型前面加static关键字即可

        修饰符 static 返回值类型 方法名(参数列表){

      方法体

        }

      例:

1 class School {
2     public static final String SCHOOL_NAME = "北京大学";
3     public static void method(){
4         System.out.println("一个静态方法");
5     }
6 }

      2.静态成员方法访问方式:

         对象名.静态方法名(实参);

      类名.静态方法名(实参);  推荐

      3.注意事项:

        非静态方法中可以直接访问静态成员和非静态成员

        静态方法中只能直接访问静态成员,不能直接访问非静态成员

        静态方法中不能出现this/super

        静态成员:包含静态成员变量和静态成员方法

        多态调用方法中,编译看=左边,父类有,编译成功,父类没有,编译失败

          运行,静态方法,运行父类中的静态方法,

          运行,非静态方法,运行子类的重写方法

          成员变量,编译运行全是父类

        static关键字修饰变量时,会使该变量在类加载时就会被初始化,不会因为对象的创建再次被加载,当变量被static 修饰时就代表该变量只会被初始化一次.

  

原文地址:https://www.cnblogs.com/zhai113/p/11583748.html

时间: 2024-08-29 15:47:04

final、static关键字的相关文章

Java中final和static关键字总结

1.final: final关键字可用于类.方法.变量前. final修饰的类不可被继承,例如java.lang.Math就是一个 final类,不可被继承. final修饰变量,在显示初始化后不可改变变量值,用于常量定义.如果final变量是引用变量,则不可以改变它的引用对象,但可以改变对象的数据(属性). final修饰的方法不可被重写. 错误案例) package com.sp; public final class Fish {        final String name = "鱼

变量,final常量,类成员变量,static关键字,实例变量,静态变量,局部变量

1.常量:又称为final变量,在整个程序中仅能被赋值一次 final int num = 1215; num = 1216; // 错误,仅能赋值一次 2.类成员变量:不在方法中定义的变量即为成员变量,在方法体内定义的变量则为局部变量 成员变量含义:对象的属性 public class Book{ int id; string name; //两个成员变量 public String getName(){ int id = 0;  //局部变量,必须进行赋值或初始化 } } 3.static关

final和static关键字的个人认识

final fianl关键字可以修饰类.方法和变量. a. 修饰类 final修饰的类,该类没有子类,该类不能被继承. b. 修饰方法 final可以修饰方法.final修饰的方法不能被重写. c. 修饰变量 final修饰的变量,是一个常量,且只能被赋值 一次,可以是成员变量和局部变量. static a. static用于修饰成员,可以是成员变量和成员方法. b. 被static修饰后的成员,可以直接被类调用. 类名.静态成员 c. 随着类的加载而加载,随着类的消失而消失.类一加载,就有静态

java 中final和static关键字说明

final fianl关键字可以修饰类.方法和变量. a. 修饰类 final修饰的类,该类没有子类,该类不能被继承. b. 修饰方法 final可以修饰方法.final修饰的方法不能被重写. c. 修饰变量 final修饰的变量,是一个常量,且只能被赋值 一次,可以是成员变量和局部变量. static a. static用于修饰成员,可以是成员变量和成员方法. b. 被static修饰后的成员,可以直接被类调用. 类名.静态成员 c. 随着类的加载而加载,随着类的消失而消失.类一加载,就有静态

final关键字和static关键字的简单理解

final关键字: 1.final修饰的类不可以被继承:final修饰的方法不可以被重写:final修饰的变量不可以被修改: 好处:1.为方法上锁,当定义方法不想被子类修改时可以采取此办法: 2.提高执行效率,编译器加载内嵌机制: static关键字: 1.static方法: 1.只能调用其他的static方法 2.只能使用static变量 3.不能以任何方式引用this或者super关键字 (因为静态方法在编译时,最先被加载,所以有他的优势 以及 一定的局限性) static常常在应用开发中提

final关键字、static关键字

final关键字 继承带来了好处,同时也会有弊端出现,比如有的时候我们不需要继承某些类或者类中成员的时候,就可以用到final的修饰了,它可以修饰类,成员变量,成员方法,以及局部变量.final的意思就是最终的意思,被他修饰的成员变量会变成一个不能改变值的常量,被他修饰的成员方法不能被子类所重写,被它修饰的类不能被继承. final的特点: 1. 被final修饰的类,不能被其它的类继承,也就是说它是一个最终类,但是这个类可以继承其他类. 2. 被final修饰的方法,不能被其子类所重写,可以被

Java——面向对象进阶(final关键字,static关键字,匿名对象,内部类,包的声明与访问,四种访问修饰符,代码块)

一.final关键字 继承的出现提高了代码的复用性,并方便开发.但随之也有问题,有些类在描述完之后,不想被继承,或者有些类中的部分方法功能是固定的,不想让子类重写.可是当子类继承了这些特殊类之后,就可以对其中的方法进行重写,那怎么解决呢? 要解决上述的这些问题,需要使用到一个关键字final,final的意思为最终,不可变.final是个修饰符,它可以用来修饰类,类的成员,以及局部变量. 1.修饰类 被final修饰的类不可以被继承,但是可以继承其他类. class Yy {} final cl

final关键字,static关键字

Final final的意思为最终,不可变.final是个修饰符,它可以用来修饰类,类的成员,以及局部变量.不能修饰构造方法. 注意: 被final修饰的类不能被继承但可以继承别的类 class Yy {} final class Fu extends Yy{} //可以继承Yy类 class Zi extends Fu{} //不能继承Fu类 final修饰成员方法:    1.该方法可以被子类继承,但是不能被重写    2.从父类那里继承来的方法重写后可以加final关键字 class Fu

this,final super,static关键字

this关键字 this调用构造方法: 在之前学习方法之间调用时,可以通过方法名进行调用.可是针对构造方法,无法通过构造方法名来相互调用. 构造方法之间的调用,可以通过this关键字来完成. |------构造方法调用格式: this(参数列表); |------构造方法的调用: package com.oracle.demo01; public class student { private String name; private int age; public student(){ //t

Java final、static 关键字

问:谈谈 Java 中 final.finally.finalize 的区别?   答:这道题其实没有任何意义,无非就是考察开发者有没有区分这几个关键字的含义,仅仅关联是因为长得像而已. final 是一个修饰符,如果一个类被声明为 final 则其不能再派生出新的子类,所以一个类不能既被声明为 abstract 又被声明为 final 的:将变量或方法声明为 final 可以保证它们在使用中不被改变(对于对象变量来说其引用不可变,即不能再指向其他的对象,但是对象的值可变),被声明为 final