java基础 ---- final关键字
final关键字的理解概述:
final关键字修饰的内容只能使用,不能改变或扩展。如:API中提供的类不能随便继承改写,有public final class String、 public final class Math 。
final关键字的使用概述:
final关键词可以修饰类,方法,基本类型变量,引用类型变量:被修饰的类,不能被继承;被修饰的方法,不能被重写;
被修饰的基本类型变量,只能赋值一次,不能再被重新赋值;被修饰的引用类型变量,
只能指向一个对象,地址不能再更改,但是不影响对象内部的成员变量值的修改。
final关键字的最终测试代码:
/**
* 构造一个一般类
* 包含无参数,有参数的构造方法
* 包含final成员变量,一般成员变量
* 包含final成员方法,一般成员方法
*/
class MyClass {
int num = 1;
final String SIGN = "myClass"; //final修饰的常量名称,书写规范作大写字母
// final String SIGN;
// MyClass(String SIGN) {
// this.SIGN = SIGN;
// }
final void method() {
System.out.println("AAA");
}
void method02() {
System.out.println("BBB");
}
}
/**
* 构造一个final类
*/
final class MyClass02 {
}
/**
* 测试子类继承final类,一般类
*/
//class MyClassZi extends MyClass02{} 错于final类不能被继承
class MyClassZi extends MyClass {
void method02() {
System.out.println("BBB");
}
// final void method() {
// System.out.println(CCC");
// }错于final方法不能重写
}
public class FinalCode {
public static void main(String[] args) {
/**
* 测试final修饰新建对象
* 测试分别为两种成员变量赋值
* 测试分别为两种成员方法赋值
*/
final MyClass myClass = new MyClass();
//myClass = new MyClass();错于final修饰的引用变量只能指向一个对象内存地址
//
myClass.num = 2;//对象被final关键词修饰,不影响一般成员变量的重新赋值
//myClass.sign = "myClass02"; 错于final修饰的成员变量不能重新赋值
//
}
}