java多态和强制类型转换
子类可以赋值给超类,称之为向上转型,这个是自动的。
超类不可以赋值给子类,这个是向下转型,需要我们手动实现。
赋值给超类的子类引用在运行期间将表现出不同的特性,这就是多态。
小类型 可转换为 大类型
大类型 转小类型需要 强制转换
对于存在继承关系的强制类型转换:
子类转换为父类属于向上塑型,可以直接转换
父类转换为子类属于向下塑型,需要强制类型转换,但是不一定成功。成功的条件是这个父类是经过子类向上塑型转换来的
即 :Father father=new Son(); Son son=(Son)father;
对于不存在继承关系的强制类型转换,一般都是失败的(如果不写转换方法的话)
即:
子类可转为父类,父类不可以转为子类(如果不用强制类型转换)
1. 子类和父类含有相同的成员变量的时候,访问的是父类的成员变量
2. 子类和父类含有相同的成员方法是,访问的是子类的成员方法
3. 子类和父类含有相同的静态函数和静态方法时,访问的是父类的。
4. 父类不能访问子类特有成员和方法(强制类型转换除外)
也就是说,只有在访问成员方法的时候,才会表现出多态。
或者说:
对象多态时:
1.成员变量:(不涉及覆盖)编译时: 参考引用变量所属的类中是否有调用的成员变量, 有, 编译通过,没有,编译失败。运行时: 参考引用变量所属的类中是否有调用的成员变量, 并运行该类所属中的成员变量。简单的说:编译和运行都参考等号的左边。2.成员函数(非静态):编译时:参考引用变量所属的类中是否有调用的成员变量, 有, 编译通过, 没有,编译失败:运行时:参考的是对象所属的类中是否有调用的函数。简单的说:编译看左边, 运行看右边。3.静态函数, 变量: 编译和运行都是参考左边参数类型! 其实静态方法不存在多态, 静态方法是属于类的,我们说的是对象的多态!静态方法直接用类名调用就好了, 没必要创建对象! 静态的方法只能被静态的方法所覆盖!java多态和强制类型转换的更多相关文章
- 《Java基础知识》Java多态对象的类型转换
这里所说的对象类型转换,是指存在继承关系的对象,不是任意类型的对象.当对不存在继承关系的对象进行强制类型转换时,java 运行时将抛出 java.lang.ClassCastException 异常. ...
- 慕课网-安卓工程师初养成-2-10 Java中的强制类型转换
来源:http://www.imooc.com/code/1241 相信小伙伴们也发现了,尽管自动类型转换是很方便的,但并不能满足所有的编程需要. 例如,当程序中需要将 double 型变量的值赋给一 ...
- 今天聊一聊Java引用类型的强制类型转换
实际上基本类型也是存在强制类型转换的,这里简单提一下.概括来讲分为两种: 1.自动类型转换,也叫隐式类型转换,即数据范围小的转换为数据范围大的,此时编译器自动完成类型转换,无需我们写代码 2.强制类型 ...
- Java中的强制类型转换
例如,当程序中需要将 double 型变量的值赋给一个 int 型变量,该如何实现呢? 显然,这种转换是不会自动进行的!因为 int 型的存储范围比 double 型的小.此时就需要通过强制类型转换来 ...
- Java中如何强制类型转换
例如,当程序中需要将 double 型变量的值赋给一个 int 型变量,该如何实现呢? 显然,这种转换是不会自动进行的!因为 int 型的存储范围比 double 型的小.此时就需要通过强制类型转换来 ...
- Java中的基本类型转换,数据溢出原理
java中的数据类型 java是一种强类型语言,在java中,数据类型主要有两大类,基本数据类型和引用数据类型,不同的数据类型有不同的数据存储方式和分配的内存大小. 基本数据类型中,各数据类型所表示的 ...
- c#中的里氏转换和Java中强制类型转换在多态中的应用
在c#中: 注意: 子类并没有继承父类的构造函数,而是会默认调用父类那个无参数的构造函数. 如果一个子类继承了一个父类,那么这个子类除了可以使用自己的成员外,还可以使用从父类那里继承过来的成员.但是父 ...
- java面向对象类的继承~ 匿名类 ;多态特性;强制类型转换
类的继承 创建子类语法: 修饰符 class 子类名 extends 父类名{ } 匿名子类语法: 直接实例化,过程中通过匿名类 继承父类,在实例化过程中将子类匿名 <父类 ...
- Java学习笔记二十六:Java多态中的引用类型转换
Java多态中的引用类型转换 引用类型转换: 1.向上类型转换(隐式/自动类型转换),是小类型到大类型的转换: 2.向下类型转换(强制类型转换),是大类型到小类型的转换: 3.instanceof运算 ...
随机推荐
- 【LeetCode】删除链表的倒数第N个节点
给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点. 示例: 给定一个链表: 1->2->3->4->5, 和 n = 2. 当删除了倒数第二个节点后,链表变为 ...
- Spring Cloud之Swagger2 API接口管理
随着微服务架构体系的发展和应用, 为了前后端能够更好的集成与对接,同时为了项目的方便交付,每个项目都需要提供相应的API文档. 来源:PC端.微信端.H5端.移动端(安卓和IOS端) 传统的API文档 ...
- Spring Cloud之ZuulFilter拦截请求参数
过滤器放到网关: package com.toov5.filter; import javax.servlet.http.HttpServletRequest; import org.apache.c ...
- 如何用<Enter>键代替<Tab>键实现光标焦点转移?
1.在主窗体的private中定义过程: procedure doenterastab(var Msg:TMsg;var Handled:Boolean); begin if Msg.messa ...
- 通用jquery页面验证
页面通过给input 标签设置样式或者属性,即可实现所有页面的验证,customValidate方法并支持自己补充验证! 验证包括:必输项,只能输入数字, 输入数字并设定小数最大位数,下拉框必选,复选 ...
- POJ 2253 Frogger(warshall算法)
题意:湖中有很多石头,两只青蛙分别位于两块石头上.其中一只青蛙要经过一系列的跳跃,先跳到其他石头上,最后跳到另一只青蛙那里.目的是求出所有路径中最大变长的最小值(就是在到达目的地的路径中,找出青蛙需要 ...
- Java_JS_01_java调用js
二.资源帖 1.JAVA执行javascript方法 2.在Java中直接调用js代码 3.Java执行js脚本 4.Java 8 Nashorn 教程 5.Java 脚本引擎
- 51nod 1686 第K大区间2
1685 第K大区间2 定义一个区间的值为其众数出现的次数.现给出n个数,求将所有区间的值排序后,第K大的值为多少. 众数(统计学/数学名词)_百度百科 Input 第一行两个数n和k(1<=n ...
- MaCrea Lit Sphere maps
http://www.zbrushcentral.com/showthread.php?92157-MaCrea-Material-Creation-Tool 这边提供几个可以获取MatCap贴图的网 ...
- 桥接以及Mercury MW54R中继
家里连个路由器,一个是比较先进的TP-Link的TL-WR842N(100M),另外一个是比较古老的水星(Mercury) MW54R(54M),我们知道新的路由器都有WDS功能,方便作为副路由器(中 ...