09-01 Java final,多态,抽象类,接口
final
- /*
- final可以修饰类,方法,变量
- 特点:
- final可以修饰类,该类不能被继承。
- final可以修饰方法,该方法不能被重写。(覆盖,复写)
- final可以修饰变量,该变量不能被重新赋值。因为这个变量其实常量。
- 常量:
- A:字面值常量
- "hello",10,true
- B:自定义常量
- final int x = 10;
- */
- //final class Fu //无法从最终Fu进行继承
- class Fu {
- public int num = 10;
- public final int num2 = 20;
- /*
- public final void show() {
- }
- */
- }
- class Zi extends Fu {
- // Zi中的show()无法覆盖Fu中的show()
- public void show() {
- num = 100;
- System.out.println(num);
- //无法为最终变量num2分配值
- //num2 = 200;
- System.out.println(num2);
- }
- }
- class FinalDemo {
- public static void main(String[] args) {
- Zi z = new Zi();
- z.show();
- }
- }
final修饰变量的特点:
- /*
- 实例:final修饰局部变量的问题
- 基本类型:基本类型的值不能发生改变。
- 引用类型:引用类型的地址值不能发生改变,但是,该对象的堆内存的值是可以改变的。
- */
- class Student {
- int age = 10;
- }
- class FinalTest {
- public static void main(String[] args) {
- //局部变量是基本数据类型
- int x = 10;
- x = 100;
- System.out.println(x);
- final int y = 10;
- //无法为最终变量y分配值
- //y = 100;
- System.out.println(y);
- System.out.println("--------------");
- //局部变量是引用数据类型
- Student s = new Student();
- System.out.println(s.age);
- s.age = 100;//对象的堆内存是可以改变的
- System.out.println(s.age);
- System.out.println("--------------");
- final Student ss = new Student();
- System.out.println(ss.age);
- ss.age = 100;
- System.out.println(ss.age);
- //重新分配内存空间
- //无法为最终变量ss分配值(地址值)
- ss = new Student();
- }
- }
final修饰变量的初始化时机
- /*
- final修饰变量的初始化时机
- A:被final修饰的变量只能赋值一次。
- B:在构造方法完毕前。(非静态的常量)
- C:定义的时候就要赋值(静态的常量)
- */
- class Demo {
- //int num = 10;
- //final int num2 = 20;
- int num;
- final int num2;
- {
- //num2 = 10;
- }
- 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);
- }
- }
09-01 Java final,多态,抽象类,接口的更多相关文章
- -1-2 java 面向对象基本概念 封装继承多态 变量 this super static 静态变量 匿名对象 值传递 初始化过程 代码块 final关键字 抽象类 接口 区别 多态 包 访问权限 内部类 匿名内部类 == 与 equal
java是纯粹的面向对象的语言 也就是万事万物皆是对象 程序是对象的集合,他们通过发送消息来相互通信 每个对象都有自己的由其他的对象所构建的存储,也就是对象可以包含对象 每个对象都有它的类型 也就是 ...
- JAVA笔记6__抽象类/接口/多态/instanceof关键字、父类设计法则
/** * 抽象类:很多具有相同特征和行为的类可以抽象为一个抽象类 * 1.抽象类可以没有抽象方法,有抽象方法的类必须是抽象类 * 2.非抽象类继承抽象类必须实现抽象方法[可以是空实现] * 3.抽象 ...
- JAVA 之 多态 抽象 接口
一:多态 1:多态 一个对象有多种形式的能力 2:步骤 1编写父类派生子类 2子类重写父类方法 3用父类的数据类型引用子类对象 3:静态多态的实现方式就是方法重载 4:动态多态的实现方式就是重写 ...
- 【Java基础】【09面向对象_多态&抽象类&接口】
09.01_面向对象(多态的概述及其代码体现) A:多态(polymorphic)概述 事物存在的多种形态 B:多态前提 a:要有继承关系. b:要有方法重写. c:要有父类引用指向子类对象. C:案 ...
- Java学习笔记 抽象类 接口 多态
instanceof 对象名 instanceof 类名 该对象是否属于该类 Animal animal = new Dog(); if(animal instanceof Dog){ Dog d = ...
- 06 面向对象:多态&抽象类&接口&权限修饰符&内部类
多态: /* 多态(polymorphic)概述 * 事物存在的多种形态 多态前提 * a:要有继承关系. * b:要有方法重写. * c:要有父类引用指向子类对象. * 成员变量 * 编译看左边(父 ...
- PHP中多态,抽象类,接口,
小例子: 需求:公司定义一个接口让我们开发功能 usb.interface.php: <?php interface USB{ public function run(); } store.cl ...
- java抽象类、多态、接口
抽象类 抽象类的产生 当编写一个类时,我们往往会为该类定义一些方法,这些方法是用来描述该类的功能具体实现方式,那么这些方法都有具体的方法体. 但是有的时候,某个父类只是知道子类应该包含怎么样的方法,但 ...
- java 面向对象面试题,问答题,构造方法,抽象类,继承,多态,接口,异常总结;
一,构造方法的特点 面向对象的思想是如何在java展现的呢? 就是通过类和对象 类是一组相关的属性和行为的集合.是一个抽象的概念. 对象是该类事物的具体表现形式.具体存在的个体. 一.抽象类的抽象方法 ...
- JAVA之旅(七)——final关键字 , 抽象类abstract,模板方法模式,接口interface,implements,特点,扩展
JAVA之旅(七)--final关键字 , 抽象类abstract,模板方法模式,接口interface,implements,特点,扩展 OK,我们继续学习JAVA,美滋滋的 一.final 我们来 ...
随机推荐
- C#中string类型是值类型还是引用类型?(转)
出处:https://www.cnblogs.com/dxxzst/p/8488567.html .Net框架程序设计(修订版)中有这样一段描述:String类型直接继承自Object,这使得它成为一 ...
- c#利用循环将类实例化为对象
参考:https://yq.aliyun.com/wenzhang/show_6121 上面的代码每次使用前并没有实例化,会报错,实例化以下就好了,参考:http://bbs.csdn.net/top ...
- Mybatis-Plus 实战完整学习笔记(四)------全局参数配置
一.全局配置设置 (1)全局配置Id自动生成 <!--定义mybatisplus全局配置--> <bean id="globalConfig" class=&qu ...
- README.md 编写
Spring Boot Demo =========================== 该文件用来测试和展示书写README的各种markdown语法.GitHub的markdown语法在标准的ma ...
- (转)WCF中神秘的“8733"端口和“Design_Time_Addresses”
转自:http://blog.csdn.net/bitfan/article/details/4193319 如果使用Visual Studio 2008 SP1开发WCF应用程序时,会发现当使用Vi ...
- python的基础socket知识
对于所有的Web应用,本质上其实就是一个socket服务端,用户的浏览器其实就是一个socket客户端. 代码意思if __name__ == '__main__':是主文件的话就先执行main函数, ...
- 20169207《Linux内核原理与分析》第六周作业
这周的作业同样分为两部分,第一部分的学习MOOC第四节[扒开系统调用的三层皮],并结合实验楼的实验四深入学习.第二部分阅读学习教材「Linux内核设计与实现 (Linux Kernel Develop ...
- 【python 字典、json】python字典和Json的相互转换
[python 字典.json]python字典和Json的相互转换 dump/dumps字典转换成json load/loadsjson转化成字典 dumps.loads直接输出字符 dump.lo ...
- 5、Makefile基础知识汇总(转自陈皓总述)
一.Makefile里有什么? Makefile里主要包含了五个东西:显式规则.隐晦规则.变量定义.文件指示和注释. 1.显式规则.显式规则说明了,如何生成一个或多的的目标文件.这是由Makefile ...
- poj 1753 2965
这两道题类似,前者翻转上下左右相邻的棋子,使得棋子同为黑或者同为白.后者翻转同行同列的所有开关,使得开关全被打开. poj 1753 题意:有一4x4棋盘,上面有16枚双面棋子(一面为黑,一面为白), ...