栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java中的final如何理解——详解

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java中的final如何理解——详解

目录

引言

final修饰类

final修饰方法 

final修饰变量 

final修饰局部变量 

final修饰成员变量 

final修饰变量注意点 


 

引言



        今天我们重点来讲解一下Java中的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修饰的变量是基本类型:那么变量存储的数据值不能发生改变。
  • 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()");
    //输出结果:
    //石原里美
    //工藤静香

创作不易,给个三连吧! 

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/836670.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号