目录
引言
final修饰类
final修饰方法
final修饰变量
final修饰局部变量
final修饰成员变量
final修饰变量注意点
引言
🌈🌈🌈
今天我们重点来讲解一下Java中的final关键字,首先我们可以通过字面意思理解final关键字——“最终,最后”,因此被final关键字修饰的类、方法、变量将被赋予最终的含义:类:修饰过后的类不能被子类继承;方法:修饰过后的方法不能被重写;变量:修饰过后的变量不能被二次修改。接下来对其详细地讲解:
final修饰类
final修饰方法❤️❤️❤️ final修饰的类,类不能被继承❤️❤️❤️
//未被final修饰的father类 public class son extends father{ } public class father{ } //被final修饰的father类 public class son extends father{ //son无法继承father类,会出现报错! } public final class father{ }
final修饰变量💜💜💜final修饰的方法,方法不能被重写💜💜💜
//未被final修饰的方法 public class son extends father{ //可以正常重写say()方法 @Override public void say(){ System.out.println("可以给零花钱吗?"); } } public class father{ public void say(){ System.out.println("Hello!"); } } //被final修饰的方法 public class son extends father{ //由于say()被final修饰,所以无法重写,会报错! @Override public void say(){ System.out.println("可以给零花钱吗?"); } } public class father{ public final void say(){ System.out.println("Hello!"); } }
final修饰局部变量💙💙💙final修饰的变量,有且仅有一次机会赋值💙💙💙
首先应该明确,在Java中有以下两种变量:
1、局部变量
2、成员变量
i>实例成员变量
ii>静态成员变量
🚀因此变量类型不同,final所造成的影响也会不同🚀
final修饰成员变量🐼第一种情况是在main函数中使用final对任意变量进行修饰:
//final未修饰变量 double Pi = 3.1415; pi = 3.14; //final修饰变量 final double Pi = 3.1415; //Pi二次赋值,会报错! pi = 3.14;
🦄第二种情况是在定义的函数中将final修饰的变量作为参数进行传递:
//未使用final对变量修饰 test(3); public satic void test(int a){ a = 1; } //使用final对变量修饰 test(3); public satic void test(final int a){ //由于在传值的时候已经赋过值了,所以不能二次赋值 a = 1; }
final修饰变量注意点🐾第一种情况是修饰静态成员变量(public satic final 修饰的也称为常量)
public satic final String name = "石原里美"; //由于final修饰name,所以不能对name二次赋值 name = "工藤静香";
🦁第二种情况是修饰实例成员变量(由于实例对象属于每个对象,若值无法改变则毫无意义,基本不用)
public final String name = "石原里美"; //由于final修饰,所以不能改变其值 name = "工藤静香";
- final修饰的变量是基本类型:那么变量存储的数据值不能发生改变。
- final修饰的变量是引用类型:那么变量存储的地址值不能发生改变,但是地址指向的对象内容是可以发生变化的。
class actress{ private String name; public actress(String name){ this.name = name; } public getName(){ return name; } public setName(String name){ this.name = name; } } actress a = new actress("石原里美"); a = null;//第二次赋值所以报错 System.out.prinyln("a.getName()"); a.setName("工藤静香");//改变的是指针所指向的数据 System.out.prinyln("a.getName()"); //输出结果: //石原里美 //工藤静香
创作不易,给个三连吧!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)