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. antlr 4新特性总结及与antlr v3的不同

    antlr 4新特性总结及与antlr v3的不同 学习曲线低.antlr v4相对于v3,v4更注重于用更接近于自然语言的方式去解析语言.比如运算符优先级,排在最前面的规则优先级最高: 层次更清晰. ...

  2. EBS中使用JAVA方式发送HTML格式邮件

    转自huan.gu专栏:http://blog.csdn.net/gh320/article/details/17174769 EBS中使用JAVA方式发送HTML格式邮件 一.开发工具:JDevel ...

  3. [linux RedHat]windows下使用putty远程连接linux 下载JDK和tomcat

    本文地址:http://blog.csdn.net/sushengmiyan/article/details/43154543 本文作者:sushengmiyan ------------------ ...

  4. 集合框架之List接口

    有序的 collection(也称为序列).此接口的用户可以对列表中每个元素的插入位置进行精确地控制.用户可以根据元素的整数索引(在列表中的位置)访问元素,并搜索列表中的元素. 与 set 不同,列表 ...

  5. 安卓TextView完美展示html格式代码

    对于TextView展示html格式代码,最简单的办法就是使用textview.setText(Html.fromHtml(html));,即便其中有img标签,我们依然可以使用ImageGetter ...

  6. Android中三种计时器Timer、CountDownTimer、handler.postDelayed的使用

    在android开发中,我们常常需要用到计时器,倒计时多少秒后再执行相应的功能,下面我就分别来讲讲这三种常用的计时的方法. 一.CountDownTimer 该类是个抽象类,如果要使用这个类中的方法, ...

  7. 后端分布式系列:分布式存储-HDFS 架构解析

    本文以 Hadoop 提供的分布式文件系统(HDFS)为例来进一步展开解析分布式存储服务架构设计的要点. 架构目标 任何一种软件框架或服务都是为了解决特定问题而产生的.还记得我们在 <分布式存储 ...

  8. Android日历视图(CalendarView)讲解-android学习之旅(三十六)

    CalendarView简介 CalendarView用于显示和选择日期,如果希望监听事件的改变可以用setOnDateChangeListener()方法. CalendarView属性介绍 代码示 ...

  9. (copy)赋值构造函数的4种调用时机or方法

    第一种调用方法: demo #include <iostream> using namespace std; class Text { public: Text() // 无参数构造函数 ...

  10. SDK目录结构

    android sdk里的各目录作用 AVD Manager.exe:虚拟机管理工具,用于建立和管理虚拟机. SDK Manager.exe:sdk管理工具,用于管理.下载sdk.sdk工具,能及扩展 ...