Java基础学习之final和多态及类型转换

final关键字:

final关键字是最终的意思,可以修饰类,成员变量,成员方法。

?    修饰类,类不能被继承

?    修饰变量,变量就变成了常量,只能被赋值一次。

?    修饰方法,方法不能被重写

final关键字面试题

?    final修饰局部变量

在方法内部,该变量不可以被改变,只可以赋值一次。

在方法声明上,分别演示基本类型和引用类型作为参数的情况

基本类型,是值不能被改变

引用类型,是地址值不能被改变。对象在堆内存的值是可以改变的。

?    final修饰变量的初始化时机

在对象构造完毕前即可(非静态常量)

权限修饰符修饰局部变量没有任何意义。

多态:某一个事物,在不同时刻表现出来的不同状态。

看对象时,从有往左看。

举例:

猫可以是猫的类型。猫 m = new 猫();

同时猫也是动物的一种,也可以把猫称为动物。

动物 d = new 猫();

多态前提和体现

?    有继承关系

?    有方法重写

?    有父类引用指向子类对象

多态时成员访问特点

成员变量

编译看左边,运行看左边

成员方法

编译看左边,运行看右边

静态方法和类相关

编译看左边,运行看左边

所以静态方法不能算方法的重写

对象的转换关系

(1)      向上转型:在创建对象时,对象可以作为本身的类型引用,可以作为父类型的引用(将一个子类对象直接赋值给一个父类的引用变量)。

向上转型语法:<父类型><引用变量>=new<子类型>

实际调用的是子类的方法。

(2)向下 转型:将父类的对象作为其子类的类型的引用(需要强制类型转换)。

向下转型的语法:<子类型> <引用变量> = (<子类型>)<父类型引用变量>;

类型转换注意事项

(1)向上,向下都必须是两个类型之间存在继承关系。

(2)向上时,系统会自动进行类型转换,无强制转换。

(3)向下时,只有父类的引用变量才能转换成子类,一个父类的实例对象是不能被强制转换成子类的。

(4)基本数据类型的转换时只能是数值型的数据(包括整型,字符型,浮点型),同时数值型无法同布尔类型转换。

多态的好处:提高代码的可维护性(由继承体现)   提高代码的扩展性

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 07-11

Java基础学习之final和多态及类型转换的相关文章

JAVA基础学习之final关键字、遍历集合、日期类对象的使用、Math类对象的使用、Runtime类对象的使用、时间对象Date(两个日期相减)

1.final关键字和.net中的const关键字一样,是常量的修饰符,但是final还可以修饰类.方法.写法规范:常量所有字母都大写,多个单词中间用 "_"连接. 2.遍历集合ArrayList<Integer> list = new ArrayList<Integer>();list.add(1);list.add(3);list.add(5);list.add(7);// 遍历List方法1,使用普通for循环:for (int i = 0; i <

Java基础学习191221(可变参数,数组,Array类,稀疏数组,继承重写多态,抽象类,接口)

Java基础学习 可变参数 在方法声明中,在指定参数类型后加一个省略号(...). 一个方法中只能指定一个可变参数,它必须是方法的最后一个参数.任何普通参数都必须在它之前声明. public class printMax { public static void main(String[] args) { printMax(1,5,8,78,415,15); } public static void printMax( double... numbers){ if (numbers.length

Java基础学习总结--多态

一.面向对象的三大特性:封装.继承.多态 ? 从一定角度来看,封装和继承几乎都是为多态而准备的. 二.什么是多态? ? 指允许不同类的对象对同一消息做出响应.即同一消息可以根据发送对象的不同而采用多种不同的行为方式.(发送消息就是函数调用) 三.实现多态的技术以及三个必要条件: ? 实现多态的技术称为:动态绑定(dynamic binding),是指在执行期间判断所引用对象的实际类型,根据其实际的类型调用其相应的方法. 三个必要条件: 继承 重写 父类引用指向子类对象 四.多态的作用.好处.类型

java基础学习总结——接口

java基础学习总结——接口 一.接口的概念 JAVA是只支持单继承的,但现实之中存在多重继承这种现象,如“金丝猴是一种动物”,金丝猴从动物这个类继承,同时“金丝猴是一种值钱的东西”,金丝猴从“值钱的东西”这个类继承,同时“金丝猴是一种应该受到保护的东西”,金丝猴从“应该受到保护的东西”这个类继承.这样金丝猴可以同时从 “动物类”.“值钱的东西类”.“应该受到保护的东西” 这三个类继承,但由于JAVA只支持单继承,因此金丝猴只能从这三个类中的一个来继承,不能同时继承这三个类.因此为了封装现实生活

Java基础学习总结——Java对象的序列化和反序列化

一.序列化和反序列化的概念 把对象转换为字节序列的过程称为对象的序列化. 把字节序列恢复为对象的过程称为对象的反序列化. 对象的序列化主要有两种用途: 1) 把对象的字节序列永久地保存到硬盘上,通常存放在一个文件中: 2) 在网络上传送对象的字节序列. 在很多应用中,需要对某些对象进行序列化,让它们离开内存空间,入住物理硬盘,以便长期保存.比如最常见的是Web服务器中的Session对象,当有 10万用户并发访问,就有可能出现10万个Session对象,内存可能吃不消,于是Web容器就会把一些s

java基础学习总结——线程(一)

永不放弃,一切皆有可能!!! 只为成功找方法,不为失败找借口! java基础学习总结——线程(一) 一.线程的基本概念 线程理解:线程是一个程序里面不同的执行路径 每一个分支都叫做一个线程,main()叫做主分支,也叫主线程. 程只是一个静态的概念,机器上的一个.class文件,机器上的一个.exe文件,这个叫做一个 进程.程序的执行过程都是这样的:首先把程序的代码放到内存的代码区里面,代码放到代码区后并没有马上开始执行,但这时候说明了一个进程准备开始,进程已 经产生了,但还没有开始执行,这就是

Java基础学习——数组初识(1)

Java基础学习--数组初识(1) 1什么是数组 Java中常见的一种数据结构就是数组,数组可以分为一维数组.二维数组和多维数组. 数组是由一组相同的变量组成的数据类型,数组中每个元素具有相同的数据类型,数组中的每个元素都可以用一个统一的数组名和下标来确定. 2 数组的使用 数组的一般使用步骤: 声明数组 分配内存给该数组 下面是一维数组为例: 数据类型  数组名 []: 数组名 = new 数据类型 [数据个数]: 2.1一维数组的声明与赋值 1.数组的声明 int  num [];    

Java基础——封装、继承、多态

Java基础--封装.继承.多态 --小实例快速成长 抽象: 1.目的:将复杂的东西简单化,将繁乱的内容有序化. 2.过程:对相同.相似的东西合而为一,对不同的内容进行归门别类. 3.结果:类.接口. 封装: 1.目的:化零为整,将零散的内容进行归属,进行权限控制. 2.过程:将某对象的属性.方法(功能)统一到其名下,并分别设置.适当的权限进行控制管理. 3.结果:对象,接口. 继承: 1.求大同存小异:在一个系列内,大部分都有的内容,就划归父类:子类将父类的内容继承过来,可以有自身的一些发展和

JAVA基础学习笔记(2)

看了几天的视频了,都没时间来写下学习笔记,今天来写下第二次的学习笔记,前几天看的给忘记了,就写最新看到的吧 主要内容:1.类的变量与函数(方法) 2.对象的存储方式 3.新建一个对象及对象的赋值与调用 4.空对象 5.匿名对象 1.类的变量与函数(方法) class Dog      //类名 { String name;  //变量的声明 int age; String color; void bark()   //方法的定义(返回值为空,不带参数) { System.out.println(