/*
final可以修饰类,方法,变量 特点:
final(可以修饰类),该(类)(不能被继承)。一旦修饰了一个类,这个类就不能被继承了!
final以修饰方法,该方法可以被继承但是不能被重写。(覆盖,复写)
final可以修饰变量,该变量可以被继承但是不能被重新赋值。因为这个变量其实是常量。 常量:
A:字面值常量
"hello",10,true
B:自定义常量
final int x = 10;
*/ //final class Fu //无法从最终Fu进行继承,final是最终类,最终类是无法被继承的哦 class Fu {
public int num = 10;
public final int num2 = 20; } class Zi extends Fu {
public void show() {
num = 100;//注意这里是,num=100;不是int num = 100.该语句改变了num的值,即使使用super.num结果仍然是100(因为被重新赋值了)。没有被final修饰,不是最后的变量,还可以被重新赋值。
System.out.println(this.num);
System.out.println(super.num); //无法为最终变量num2分配值,该变量不能被重新赋值。因为这个变量其实是常量
//num2 = 200;
System.out.println(num2);
}
} class FinalDemo {
public static void main(String[] args) {
Zi z = new Zi();
z.show();
}
}
/*
final修饰变量的初始化时机
A:被final修饰的变量只能赋值一次。
B:在构造方法完毕前。(条件是非静态的常量)
*/
class Demo {
//int num = 10;
//final int num2 = 20;//常量,无法为最终变量num2分配值 int num;
final int num2;//这样定义再给值是没有问题的 {
num2 = 10;//num2赋值只能给一次
} public Demo() {
num = 100;
//无法为最终变量num2分配值
num2 = 200;
}
} class FinalTest2 {
public static void main(String[] args) {
Demo d = new Demo();
System.out.println(d.num);
System.out.println(d.num2);
}
}
/*
继承的代码体现 由于继承中方法有一个现象:方法重写。
所以,父类的功能,就会被子类给覆盖调。
有些时候,我们(不想让子类去覆盖掉父类的功能),(只能让他使用),final修饰之后只能被继承不能被重写。
这个时候,针对这种情况,Java就提供了一个关键字:final final:最终的意思。常见的是它可以修饰类,方法,变量。
*/
class Fu {
public final void show() {
System.out.println("这里是绝密资源,任何人都不能修改");
}
} class Zi extends Fu {
// Zi中的show()无法覆盖Fu中的show(),父类中的方法加上final后,子类没法对该方法进行重写了.报错
public void show() {//报错
System.out.println("这是一堆垃圾,你重写show方法就回报错");
}
} class ZiDemo {
public static void main(String[] args) {
Zi z = new Zi();
z.show();
}
}

最新文章

  1. ASP.NET Core框架揭秘(持续更新中…)
  2. 关于GIT合并出错的记录
  3. Hadoop入门学习笔记---part2
  4. LINQ 常见用法
  5. 数据库范式(1NF 2NF 3NF BCNF)详解一
  6. E-R图向关系模式的转换
  7. ANDROID_MARS学习笔记_S01_005CheckBox
  8. android ScrollView 充满屏幕
  9. multi-threaded copy command - robocopy
  10. Struts2 注解零配置方法(convention插件使用)
  11. 大型网站的 HTTPS 实践(三)——基于协议和配置的优化
  12. 在linux服务器之间复制文件和目录命令scp
  13. 差分约束 HDU - 1384 HDU - 3592 HDU - 1531 HDU - 3666
  14. 647. Palindromic Substrings
  15. centos7 安装curl-7.51.0
  16. python3 的 mysql 简单操作
  17. 运行mysql时,提示Table ‘performance_schema.session_variables’ doesn’t exist
  18. MIT-6.828-JOS-lab2:Memory management
  19. spring hiberante 集成出现异常 java.lang.ClassNotFoundException: org.hibernate.engine.SessionFactoryImplementor
  20. mysql 错误解决:Plugin 'FEDERATED' is disabled. /usr/sbin/mysqld: Table 'mysql.plugin' doesn't exist

热门文章

  1. 用scheme最基本的元素定义排序函数
  2. Apache shiro集群实现 (八) web集群时session同步的3种方法
  3. OpenCV:Mat元素访问方法、性能、代码复杂度以及安全性分析
  4. nginx反向代理和rewrite进行解决跨域问题、去掉url中的一部分字符串,通过nginx正则生成新的url
  5. [struts2学习笔记] 第三节 创建struts 2 HelloWorld所需的六个步骤
  6. 【java虚拟机序列】java中的垃圾回收与内存分配策略
  7. Android批量打包-如何一秒内打完几百个apk渠道包
  8. Unity插件 - MeshEditor(六) 变形动画状态机
  9. Postgre: How to import UUID function into Postgre 9.3
  10. Java --Annotation学习心得体会及笔记