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