当前位置: 首页 > article >正文

《从C/C++到Java入门指南》- 25.final 关键字

final 关键字

final 变量

final变量可以理解为C++中的const,变量一经定义无法修改。

public class Main {
	 public static void main(String args[]) {
		 final double PI = 3.1415926;
		 System.out.println(PI);
		 // PI = 3.14;	// 尝试修改会报错
	 }
}

final 方法

一个定义为final的方法可以防止子类修改该方法,之前提到过private关键字,也是同理。private关键字修饰的方法相当于隐式的将方法指定为了final。所以一个方法使用final修饰就没有必要再使用private

class Father {
	public final void turnOnTheTV() {
		System.out.println("老登打开了电视");
	}
}

class Child extends Father {
	public final void turnOnTheTV() {
		System.out.println("小子也想打开电视");
	}
}

public class Main {
	 public static void main(String args[]) {
		 var child = new Child();
		 child.turnOnTheTV();
	 }
}

可以看出,在父类中定义了final修饰的方法不允许子类进行更改,上述代码会进行报错。

final 类

被定义为final的类不能被继承。

final class Father {
	public final void turnOnTheTV() {
		System.out.println("老登打开了电视");
	}
}

class Child extends Father {

}

public class Main {
	 public static void main(String args[]) {
//		 Child child = new Child();
	 }
}

如果实例化一个继承自final父类的子类的对象,会报错。

例如,java.lang.Mathjava.lang.String是两个final修饰的类,如果他们出现在extends右侧会发生编译器报错。

class Child extends java.lang.Math {

}

public class Main {
	 public static void main(String args[]) {

	 }
}


http://www.kler.cn/a/288011.html

相关文章:

  • kafka消费者出现频繁Rebalance
  • Gitcode文件历史记录查看和还原
  • android webview常见内容
  • 【2025最新计算机毕业设计】基于SpringBoot+Vue电脑在线装机指南教程网站【源码+文档】
  • 【Pikachu】任意文件上传实战
  • AI大模型(二):AI编程实践
  • 跨地域工作利器:深度解析2024年远程控制软件的新特性
  • 力扣SQL仅数据库(1068~1084)
  • 做数据爬虫工作:是否需要准备单独的IP库和爬虫库?
  • ADAS---基于检测框的单目测距方法
  • 微服务--认识微服务
  • 在线压缩pdf,无需安装就可轻易压缩pdf文件
  • 双线服务器与BGP服务器的区别?
  • 文件上传的学习
  • node版本切换
  • 关于contextmenu-ui组件库
  • Ceph集群维护相关操作
  • 5.注册中心的其他实现-Nacos
  • 【人工智能】Transformers之Pipeline(十四):问答(question-answering)
  • JAVA后端框架【spring】--超详解
  • springboot整合logback进行日志管理(下篇)
  • 希尔排序
  • C++实现的购物小程序
  • python-uinput虚拟输入
  • ARP协议(原理,特点,报文格式,具体过程),ARP缓存(有效时间,为什么),ARP欺骗(定向断网,成为中间人),RARP简单介绍
  • 2024-8-28作业C++/QT