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

《java入门第一季》之面向对象(final关键字)的更多相关文章

  1. JAVA入门第一季(mooc-笔记)

    笔记相关信息 /** * @subject <学习与创业>作业1 * @author 信管1142班 201411671210 赖俊杰 * @className <JAVA入门第一季 ...

  2. Java入门第一季——从此投身Java??

    找工作告一段落. 最后的工作呢,和java紧密相关,也是阴差阳错,不过都是软件开发,都好了,不过以后侧重点肯定是在java这边,php有机会还是一直学下去的,那么美的说~ Java开发第一季  一.简 ...

  3. 《java入门第一季》之面向对象(谈谈接口)

    软件中有接口,这里的接口与硬件中的接口还是有很大区别的. 这里介绍接口不考虑JDK8的新特性(JDK8开始接口里面可以有非抽象方法了,介绍JDK8新特性可能要到整个第一季写完吧!) 还是直接进入接口的 ...

  4. java入门第一季2

    1. 变量:在java中,我们通过三个元素描述变量:变量类型,变量名以及变量值 注意:java中的标点符号都是英文的 2. 变量名= 首字母+其余部分 字母,+  字母 下划线,  数字 $      ...

  5. Java入门第一季

    慕课网:http://www.imooc.com/learn/85 Java入门知识第一季 1.Java开发环境和IDE的使用: 2.变量和常量 3.常用的运算符 4.流程控制语句 5.数组:使用Ar ...

  6. 《java入门第一季》之Arrays类前传(排序案例以二分查找注意的问题)

    根据排序算法,可以解决一些小案例.举例如下: /* * 把字符串中的字符进行排序. * 举例:"dacgebf" * 结果:"abcdefg" * * 分析: ...

  7. 《java入门第一季》之面向对象(static关键字)

    /* static的特点:(它可以修饰成员变量,还可以修饰成员方法) A:随着类的加载而加载 回想main方法. B:优先于对象存在 C:被类的所有对象共享 举例:班级的学生应该共用同一个班级编号. ...

  8. 《java入门第一季》之面向对象this关键字

    /* 起名字要做到见名知意. this:是当前类的对象引用.简单的记,它就代表当前类的一个对象. 注意:谁调用这个方法,在该方法内部的this就代表谁. this的场景: 解决局部变量隐藏成员变量 * ...

  9. 《java入门第一季》之面向对象(private关键字与封装概念的初探)

    /* 定义一个学生类: 成员变量:name,age 成员方法:show()方法 在使用这个案例的过程中,发现了一个问题: 通过对象去给成员变量赋值,可以赋值一些非法的数据.例如:name你赋值了一个3 ...

随机推荐

  1. oracle手工生成AWR报告方法记录

    AWR(Automatic Workload Repository)报告是我们进行日常数据库性能评定.问题SQL发现的重要手段.熟练掌握AWR报告,是做好开发.运维DBA工作的重要基本功. AWR报告 ...

  2. 关于在arm裸板编程时使用printf问题的解决方法

    在ARM裸板驱动编程中,是不允许程序直接调用C库程序的.为什么呢?因为此时kernel还没有被加载,所以在封装在kernel层的C库的API是用不了的,那怎么办? 在开发过程中,printf的功能我不 ...

  3. load balancer 配置参考

    https://wiki.ewu.edu/oit/Load_balancing_using_nginx

  4. Python 2.7的字典实现简化版(C语言)

    这是一个能自动调整大小的哈希字典,外部接口实现了下列功能. 1.字典级别: 创建字典 dict_new 归零字典 dict_clear 2.键值级别: 查找 dict_search 强制查找 dict ...

  5. android的activity栈管理

    在进行BlackBerry程序开发的时候,BlackBerry提供了一个管理Screen的栈,用来从任何地方来关闭位于最上一层的Screen,使用UiApplication.getUiApplicat ...

  6. Android之触摸手势检测GestureDetector使用详解

    在Android中,当用户触摸屏幕的时候,会产生许多手势,例如down,up,scroll,filing,onSingleTapConfirmed(单击),onDoubleTap(双击)等等. 一般情 ...

  7. 【Netty源码学习】BootStrap

    BootStrap是客户端的启动类,其主要功能就是设置必要的参数然后启动客户端. 实现如下: Bootstrap b = new Bootstrap(); b.group(group) .channe ...

  8. ROS_Kinetic_x 基於ROS和Gazebo的RoboCup中型組仿真系統(多機器人協作)

    國防科學技術大學發布了RoboCup中型組仿真平臺,基於ROS和Gazebo設計. 該平臺可以用於多機器人協作研究.參考資料如下: ROS新聞:1    http://www.ros.org/news ...

  9. java中遍历map的几种方法介绍

          喜欢用Java写程序的朋友都知道,我们常用的一种数据结构map中存储的是键值对,我们一般存储的方式是: map.put(key, value); 而提取相应键的值用的方法是: map.ge ...

  10. 参数估计:最大似然估计MLE

    http://blog.csdn.net/pipisorry/article/details/51461997 最大似然估计MLE 顾名思义,当然是要找到一个参数,使得L最大,为什么要使得它最大呢,因 ...