1.多态分为引用多态和方法多态,见测试类

    package com.wangcf;
//父类
public class Animal {
public void eat(){
System.out.println("父类的方法");
}
}
package com.wangcf;
//子类
public class Bridge extends Animal{ public void eat(){
System.out.println("子类鸟重写的方法");
} public void fly(){
System.out.println("子类鸟独有的可以飞的方法父类中没有");
}
}
package com.wangcf;
//子类
public class Tiger extends Animal{ }
package com.wangcf;
//测试类
public class Test {
public static void main(String[] args) {
//1.引用多态
Animal obj1=new Animal(); //父类的引用可以指向本类的对象
Animal obj2=new Bridge(); //父类的引用可以指向子类的对象
Animal obj3=new Tiger();
Tiger obj4=new Tiger();
//Bridg obj3=new Animal(); 子类引用不可以指向父类 //2.方法多态 优先使用子类的方法,若子类没有重写,则使用父类的方法;父类引用不可以调用子类独有的方法
obj1.eat(); //创建父类的本类对象,调用方法时,调用的是本类的方法
obj2.eat(); //若父类指向子类对象,调用方法为子类的重写方法
obj3.eat(); //或者继承方法
obj4.eat(); //若创建子类的本类对象,没有重写父类的方法,则会调用父类的方法
//obj2.fly(); 不能通过父类的引用调用子类独有的方法 }
}

 2.引用类型的转换

(1)向上转型,小类型转换为大类型,它是隐式的,自动的,不存在隐患

(2)向下转型,大类型转换为小类型,它是强制转换,存在隐患,会参数内存溢出;可以使用instanceof运算符类避免安全性问题

package com.wangcf;
//测试类
public class Test {
public static void main(String[] args) {
Bridge bri=new Bridge();
Animal animal=bri;//向上转型 //Bridge bri2=animal;向下转型,错误需要使用强制转换
Bridge bri1=(Bridge)animal;//强制 //Tiger tig=(Tiger)animal;//虽然编译器没有报错,运行时会错,我们知道animal是Briger转换来的,它不能转换为Tiger
//Tiger tiger=(Tiger)bri; //Cannot cast from Bridge to Tiger
//使用 instanceof 进行判断
if(animal instanceof Tiger){
Tiger tig1=(Tiger)animal;
}else{
System.out.println("无法进行类型转换");
}
}
}

Java中的多态,引用类型的转换的更多相关文章

  1. java中实现多态的机制是什么?

    多态性是面向对象程序设计代码重用的一个重要机制,我们曾不只一次的提到Java多态性.在Java运行时多态性:继承和接口的实现一文中,我们曾详细介绍了Java实现运行时多态性的动态方法调度:今天我们再次 ...

  2. 13、java中的多态

    1,多态的体现 父类的引用指向了自己的子类对象. 父类的引用也可以接收自己的子类对象.2,多态的前提 必须是类与类之间有关系.要么继承,要么实现. 通常还有一个前提:存在覆盖. 3,多态的好处 多态的 ...

  3. 深度分析:理解Java中的多态机制,一篇直接帮你掌握!

    Java中的多态 1 多态是什么 多态(Polymorphism)按字面的意思就是"多种状态".在面向对象语言中,接口的多种不同的实现方式即为多态.用白话来说,就是多个对象调用同一 ...

  4. Java中数据类型及其之间的转换

    Java中数据类型及其之间的转换 基本的数据类型 基本类型有以下四种:1)int长度数据类型有:byte(8bits).short(16bits).int(32bits).long(64bits).2 ...

  5. java中四种引用类型

    java中四种引用类型  今天看代码,里面有一个类java.lang.ref.SoftReference把小弟弄神了,试想一下,接触java已经有3年了哇,连lang包下面的类都不了解,怎么混.后来在 ...

  6. Java中数据类型及其之间的转换(转)

    Java中数据类型及其之间的转换 基本的数据类型 基本类型有以下四种:1)int长度数据类型有:byte(8bits).short(16bits).int(32bits).long(64bits).2 ...

  7. java中四种引用类型(对象的强、软、弱和虚引用)

    对象的强.软.弱和虚引用在JDK 1.2以前的版本中,若一个对象不被任何变量引用,那么程序就无法再使用这个对象.也就是说,只有对象处于可触及(reachable)状态,程序才能使用它.从JDK 1.2 ...

  8. 关于==和equals()方法&Java中string与char如何转换&String,StringBuffer

    1.对于基本数据类型,可以直接使用==和!=进行内容比较 如:int x=30;        int y=30;         x==y;  //true 基本数据类型 简单类型(基本类型) bo ...

  9. Java 中的多态,一次讲个够之接口实现关系中的多态

    上文还没有写完,这一篇继续 Java 中的多态,一次讲个够之继承关系中的多态 https://www.cnblogs.com/qianjinyan/p/10824576.html 接口实现关系,和继承 ...

  10. 通过实例聊聊Java中的多态

    Java中的多态允许父类指针指向子类实例.如:Father obj=new Child();  那么不禁要发问?? 使用这个父类型的指针访问类的属性或方法时,如果父类和子类都有这个名称的属性或方法,哪 ...

随机推荐

  1. redis迁移复制数据,主从关系建立实践

    装redis的机器出了点问题,需要转移数据然后初始化系统,然后我就研究了下redis的数据复制,发现了slaveof 192.168.0.1 6379这个命令,开始踩下这个坑 首先要新的服务器上进入r ...

  2. 运行TensorFlow报错,“This program requires version 3.6.1 of the Protocol Buffer runtime library, but the installed version is 3.0.0.”

    报错信息: [libprotobuf FATAL google/protobuf/src/google/protobuf/stubs/common.cc:67] This program requir ...

  3. 【五】安装fcig

    安装fcig 安装fcig 此步骤是为了让spawn-fcgi能够识别自定义的demo 编译文件 自定义c文件 测试成功后,启动spawn cgi进行代理托管 此步骤是为了让spawn-fcgi能够识 ...

  4. Python学习:14.Python面向对象(一)

    一.面向对象简介 Python设计之初,就是一门面向对象的语言,在Python中一切皆对象,而且在Python中创建一个对象也很简单,今天我们就来学习一下Python的面向对象的知识. 二.两种编程方 ...

  5. sqli-labs(less-11-16)

    POST登入 首先试试 uname=admin'# & passwd=1 登入成功 如果不知道用户名 ,注释符被过滤,可以从password入手 一般第一个登陆字段(一般是用户名)就用注释,第 ...

  6. keil5 配置 stm32f103rc 软件仿真

  7. C语言复习20170821

    函数 函数头部参数表里的变量称为形参,也是内部变量,只能在函数体内访问. 形参的作用是实现主调函数与被调函数之间的联系,通常将函数所处理的数据,影响函数功能的因素或者函数处理的结果作为形参.没有形参的 ...

  8. 20145234黄斐《Java程序设计》第九周

    教材学习内容总结 整合数据库 JDBC入门 JDBC是用于执行SQL的解决方案,开发人员使用JDBC的标准接口,数据库厂商则对接口进行操作,开发人员无须接触底层数据库驱动程序的差异性,数据库本身是个独 ...

  9. 【BZOJ4803】逆欧拉函数

    [BZOJ4803]逆欧拉函数 题面 bzoj 题解 题目是给定你\(\varphi(n)\)要求前\(k\)小的\(n\). 设\(n=\prod_{i=1}^k{p_i}^{c_i}\) 则\(\ ...

  10. [cogs347]地震

    COGS:地震(平衡树) COGS上一道题...文件名是equake 还是又打了一遍板子... 加个lazy标记就行了... 注意查询时先下传标记(lazy) // It is made by XZZ ...