final

  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进行继承
  17.  
  18. class Fu {
  19. public int num = 10;
  20. public final int num2 = 20;
  21.  
  22. /*
  23. public final void show() {
  24.  
  25. }
  26. */
  27. }
  28.  
  29. class Zi extends Fu {
  30. // Zi中的show()无法覆盖Fu中的show()
  31. public void show() {
  32. num = 100;
  33. System.out.println(num);
  34.  
  35. //无法为最终变量num2分配值
  36. //num2 = 200;
  37. System.out.println(num2);
  38. }
  39. }
  40.  
  41. class FinalDemo {
  42. public static void main(String[] args) {
  43. Zi z = new Zi();
  44. z.show();
  45. }
  46. }

final修饰变量的特点:

  1. /*
  2. 实例:final修饰局部变量的问题
  3. 基本类型:基本类型的值不能发生改变。
  4. 引用类型:引用类型的地址值不能发生改变,但是,该对象的堆内存的值是可以改变的。
  5. */
  6. class Student {
  7. int age = 10;
  8. }
  9.  
  10. class FinalTest {
  11. public static void main(String[] args) {
  12. //局部变量是基本数据类型
  13. int x = 10;
  14. x = 100;
  15. System.out.println(x);
  16. final int y = 10;
  17. //无法为最终变量y分配值
  18. //y = 100;
  19. System.out.println(y);
  20. System.out.println("--------------");
  21.  
  22. //局部变量是引用数据类型
  23. Student s = new Student();
  24. System.out.println(s.age);
  25. s.age = 100;//对象的堆内存是可以改变的
  26. System.out.println(s.age);
  27. System.out.println("--------------");
  28.  
  29. final Student ss = new Student();
  30. System.out.println(ss.age);
  31. ss.age = 100;
  32. System.out.println(ss.age);
  33.  
  34. //重新分配内存空间
  35. //无法为最终变量ss分配值(地址值)
  36. ss = new Student();
  37. }
  38. }

final修饰变量的初始化时机

  1. /*
  2. final修饰变量的初始化时机
  3. A:被final修饰的变量只能赋值一次。
  4. B:在构造方法完毕前。(非静态的常量)
  5. C:定义的时候就要赋值(静态的常量)
  6. */
  7. class Demo {
  8. //int num = 10;
  9. //final int num2 = 20;
  10.  
  11. int num;
  12. final int num2;
  13.  
  14. {
  15. //num2 = 10;
  16. }
  17.  
  18. public Demo() {
  19. num = 100;
  20. //无法为最终变量num2分配值
  21. num2 = 200;
  22. }
  23. }
  24.  
  25. class FinalTest2 {
  26. public static void main(String[] args) {
  27. Demo d = new Demo();
  28. System.out.println(d.num);
  29. System.out.println(d.num2);
  30. }
  31. }

09-01 Java final,多态,抽象类,接口的更多相关文章

  1. -1-2 java 面向对象基本概念 封装继承多态 变量 this super static 静态变量 匿名对象 值传递 初始化过程 代码块 final关键字 抽象类 接口 区别 多态 包 访问权限 内部类 匿名内部类 == 与 equal

    java是纯粹的面向对象的语言 也就是万事万物皆是对象 程序是对象的集合,他们通过发送消息来相互通信 每个对象都有自己的由其他的对象所构建的存储,也就是对象可以包含对象 每个对象都有它的类型  也就是 ...

  2. JAVA笔记6__抽象类/接口/多态/instanceof关键字、父类设计法则

    /** * 抽象类:很多具有相同特征和行为的类可以抽象为一个抽象类 * 1.抽象类可以没有抽象方法,有抽象方法的类必须是抽象类 * 2.非抽象类继承抽象类必须实现抽象方法[可以是空实现] * 3.抽象 ...

  3. JAVA 之 多态 抽象 接口

    一:多态  1:多态   一个对象有多种形式的能力 2:步骤 1编写父类派生子类 2子类重写父类方法 3用父类的数据类型引用子类对象 3:静态多态的实现方式就是方法重载 4:动态多态的实现方式就是重写 ...

  4. 【Java基础】【09面向对象_多态&抽象类&接口】

    09.01_面向对象(多态的概述及其代码体现) A:多态(polymorphic)概述 事物存在的多种形态 B:多态前提 a:要有继承关系. b:要有方法重写. c:要有父类引用指向子类对象. C:案 ...

  5. Java学习笔记 抽象类 接口 多态

    instanceof 对象名 instanceof 类名 该对象是否属于该类 Animal animal = new Dog(); if(animal instanceof Dog){ Dog d = ...

  6. 06 面向对象:多态&抽象类&接口&权限修饰符&内部类

    多态: /* 多态(polymorphic)概述 * 事物存在的多种形态 多态前提 * a:要有继承关系. * b:要有方法重写. * c:要有父类引用指向子类对象. * 成员变量 * 编译看左边(父 ...

  7. PHP中多态,抽象类,接口,

    小例子: 需求:公司定义一个接口让我们开发功能 usb.interface.php: <?php interface USB{ public function run(); } store.cl ...

  8. java抽象类、多态、接口

    抽象类 抽象类的产生 当编写一个类时,我们往往会为该类定义一些方法,这些方法是用来描述该类的功能具体实现方式,那么这些方法都有具体的方法体. 但是有的时候,某个父类只是知道子类应该包含怎么样的方法,但 ...

  9. java 面向对象面试题,问答题,构造方法,抽象类,继承,多态,接口,异常总结;

    一,构造方法的特点 面向对象的思想是如何在java展现的呢? 就是通过类和对象 类是一组相关的属性和行为的集合.是一个抽象的概念. 对象是该类事物的具体表现形式.具体存在的个体. 一.抽象类的抽象方法 ...

  10. JAVA之旅(七)——final关键字 , 抽象类abstract,模板方法模式,接口interface,implements,特点,扩展

    JAVA之旅(七)--final关键字 , 抽象类abstract,模板方法模式,接口interface,implements,特点,扩展 OK,我们继续学习JAVA,美滋滋的 一.final 我们来 ...

随机推荐

  1. C#中string类型是值类型还是引用类型?(转)

    出处:https://www.cnblogs.com/dxxzst/p/8488567.html .Net框架程序设计(修订版)中有这样一段描述:String类型直接继承自Object,这使得它成为一 ...

  2. c#利用循环将类实例化为对象

    参考:https://yq.aliyun.com/wenzhang/show_6121 上面的代码每次使用前并没有实例化,会报错,实例化以下就好了,参考:http://bbs.csdn.net/top ...

  3. Mybatis-Plus 实战完整学习笔记(四)------全局参数配置

    一.全局配置设置 (1)全局配置Id自动生成 <!--定义mybatisplus全局配置--> <bean id="globalConfig" class=&qu ...

  4. README.md 编写

    Spring Boot Demo =========================== 该文件用来测试和展示书写README的各种markdown语法.GitHub的markdown语法在标准的ma ...

  5. (转)WCF中神秘的“8733"端口和“Design_Time_Addresses”

    转自:http://blog.csdn.net/bitfan/article/details/4193319 如果使用Visual Studio 2008 SP1开发WCF应用程序时,会发现当使用Vi ...

  6. python的基础socket知识

    对于所有的Web应用,本质上其实就是一个socket服务端,用户的浏览器其实就是一个socket客户端. 代码意思if __name__ == '__main__':是主文件的话就先执行main函数, ...

  7. 20169207《Linux内核原理与分析》第六周作业

    这周的作业同样分为两部分,第一部分的学习MOOC第四节[扒开系统调用的三层皮],并结合实验楼的实验四深入学习.第二部分阅读学习教材「Linux内核设计与实现 (Linux Kernel Develop ...

  8. 【python 字典、json】python字典和Json的相互转换

    [python 字典.json]python字典和Json的相互转换 dump/dumps字典转换成json load/loadsjson转化成字典 dumps.loads直接输出字符 dump.lo ...

  9. 5、Makefile基础知识汇总(转自陈皓总述)

    一.Makefile里有什么? Makefile里主要包含了五个东西:显式规则.隐晦规则.变量定义.文件指示和注释. 1.显式规则.显式规则说明了,如何生成一个或多的的目标文件.这是由Makefile ...

  10. poj 1753 2965

    这两道题类似,前者翻转上下左右相邻的棋子,使得棋子同为黑或者同为白.后者翻转同行同列的所有开关,使得开关全被打开. poj 1753 题意:有一4x4棋盘,上面有16枚双面棋子(一面为黑,一面为白), ...