面向对象-final关键字
来源:互联网 发布:iphone电视直播软件 编辑:程序博客网 时间:2024/06/10 16:31
final关键字(掌握)
(1)是最终的意思,可以修饰类,方法,变量。
(2)特点:
A:它修饰的类,不能被继承。
B:它修饰的方法,不能被重写。
C:它修饰的变量,是一个常量。
(3)面试相关:
A:局部变量
a:基本类型 值不能发生改变
b:引用类型 地址值不能发生改变,但是对象的内容是可以改变的
B:初始化时机
a:只能初始化一次。
b:常见的给值
定义的时候。(推荐)
构造方法中。
/*继承的代码体现由于继承中方法有一个现象:方法重写。所以,父类的功能,就会被子类给覆盖调。有些时候,我们不想让子类去覆盖掉父类的功能,只能让他使用。这个时候,针对这种情况,Java就提供了一个关键字:finalfinal:最终的意思。常见的是它可以修饰类,方法,变量。*/class Fu {public final void show() {System.out.println("这里是绝密资源,任何人都不能修改");}}class Zi extends Fu {// Zi中的show()无法覆盖Fu中的show()public void show() {System.out.println("这是一堆垃圾");}}class ZiDemo {public static void main(String[] args) {Zi z = new Zi();z.show();//异常}}
/*final可以修饰类,方法,变量特点:final可以修饰类,该类不能被继承。final可以修饰方法,该方法不能被重写。(覆盖,复写)final可以修饰变量,该变量不能被重新赋值。因为这个变量其实常量。常量:A:字面值常量"hello",10,trueB:自定义常量final int x = 10;*///final class Fu //报错:无法从最终Fu进行继承class Fu {public int num = 10;public final int num2 = 20;/*public final void show() {}*/}class Zi extends Fu {//报错:Zi中的show()无法覆盖Fu中的show()public void show() {num = 100;System.out.println(num);//报错:无法为最终变量num2分配值//num2 = 200;System.out.println(num2);}}class FinalDemo {public static void main(String[] args) {Zi z = new Zi();z.show();}}
面试题:final修饰局部变量的问题:/*面试题:final修饰局部变量的问题基本类型:基本类型的值不能发生改变。引用类型:引用类型的地址值不能发生改变,但是,该对象的堆内存的值是可以改变的。*/class Student {int age = 10;}class FinalTest {public static void main(String[] args) {//局部变量是基本数据类型int x = 10;x = 100;System.out.println(x);//100final int y = 10;//y = 100;System.out.println(y);//报错:无法为最终变量y分配值//局部变量是引用数据类型Student s = new Student();System.out.println(s.age);//10s.age = 100;System.out.println(s.age);//100final Student ss = new Student();System.out.println(ss.age);//10ss.age = 100;System.out.println(ss.age);//100//重新分配内存空间,就是给新的地址值ss = new Student();//报错:无法为最终变量ss分配值}}
final修饰变量的初始化时机:
打印的是100
报错:无法为最终变量num2分配值,因为常量不能重新赋值
/*final修饰变量的初始化时机A:被final修饰的变量只能赋值一次。B:在构造方法完毕前。(仅仅针对非静态的常量,因为静态的早就加载了)*/class Demo {int num;final int num2;{//num2 = 10;}public Demo() {num = 100;num2 = 200;}}class FinalTest2 {public static void main(String[] args) {Demo d = new Demo();System.out.println(d.num);System.out.println(d.num2);}}
0 0
- 面向对象final关键字
- 面向对象-final关键字
- 面向对象-final关键字
- 面向对象--final关键字
- javaSE-面向对象-final关键字
- java面向对象-final关键字
- day03--面向对象---final关键字
- JAVA面向对象-----final关键字
- 面向对象之关键字final
- Java面向对象高级--final关键字
- 深入java面向对象二:final关键字
- java面向对象(十二) final关键字
- php面向对象基本概念(Final关键字)
- java面向对象前言之final关键字
- Java面向对象——final关键字
- Java面向对象(四)final关键字
- 面向对象-简单 final 关键字的使用
- 04-面向对象(final关键字)1 04-面向对象(final关键字)2 05-面向对象(抽象类-概述).
- WAMPServer随写笔记,运算符
- 版本控制Revision control
- ArcGIS API For Javascript之服务端配置与应用
- oracle--处理数据
- JPA映射持久化对象(Entity)
- 面向对象-final关键字
- 继承,虚函数应用,对象向量
- Hadoop 学习研究(二): 压缩实现与详解
- linux内核的整体结构
- slf4j+log4j2的整合配置
- Android APK程序的smali动态调试
- 确定可回收内存
- unity shader(待更新)
- truffle-init-webpack 项目