final关键字的一些用法

本章内容

  1. final关键字的描述
  2. final的使用方式
  3. 被final修饰的内容
  4. 使用final修饰后需要注意的问题

final关键字

概述: 由于Java当中提供了继承特性,子类可以在父类的基础上,改写父类的内容,比如:方法的重写,那么能不能随意的继承API当中提供的类呢?改写其内容呢?
显然是不行的,为了避免这种随意更改的情况,java提供了final关键字,用于修饰不可改变的内容。


final可以修饰哪些东西?

final:不可变,用于修饰列,方法,变量。

  • 类:被final修饰的类,不可被继承
  • 方法:被final修饰的方法,不能被重写
  • 变量:被final修饰的变量,不能被重新赋值

使用方式

1. 修饰类
格式如下:

public final class 类名{
     //类信息
   }

通过查询API发现,JDK官方提供了很多的被final修饰的类如:String、Math、Scanner、Character等,这些类都被final修饰,目的是仅让我们使用,而不让我们更改其内容。

2. 修饰方法
格式如下:

修饰符  final 返回值类型  方法名(参数列表){
    //方法体内容
   }

如果强制重写final修饰的方法,编译无法通过。

3. 修饰变量
3.1 修饰局部变量—基本类型
基本数据类型的局部变量,被final修饰后,只能赋值一次,不能被改变。

public class Demo{
  public static void main(String []args){
     //声明局部变量
     final int num;
     //第一次赋值
     num = 10;
     //第二次赋值
     num = 20;// 编译错误
     }

   }

3.2 修饰局部变量—引用类型
引用类型的局部变量,被final修饰后,只能指向一个对象,地址不能发生改变,但是不影响对象内部的成员变量的修改。代码如下:

public class FinalDemo2{
   public static void main(String []args){
    //构建一个对象
    final People p1 = new People();
    pi = new People();//报错,编译无法通过
    //调用setName()方法
    p1.setName("小周");// 可以修改
    }
 }

3.3 修饰成员变量
如果final修饰成员变量,那么这个变量也是不可改变的。

  • 成员变量具有默认值,但是使用final关键字修饰后,必须手动赋值,系统提供的默认值收回。
  • 被final修饰的成员变量初始化有两种方式
    1.显示初始化:
public class People{
   final String name="小周";   
}

2.构造方法赋值

public class People{
  final Sreing name;
  private int age;
  public People(String name){
   this.name=name;
   }
}

注意事项

  • 被final修饰的类,不能有子类,但是可以有父类,可以去继承其他的类
  • 因为不能不能有子类,所以其中的所有成员方法都无法进行重写。
  • 对于类和方法来说,abstract和final关键字不能同时使用,会产生矛盾。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值