Java中的多态,引用类型的转换
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中的多态,引用类型的转换的更多相关文章
- java中实现多态的机制是什么?
多态性是面向对象程序设计代码重用的一个重要机制,我们曾不只一次的提到Java多态性.在Java运行时多态性:继承和接口的实现一文中,我们曾详细介绍了Java实现运行时多态性的动态方法调度:今天我们再次 ...
- 13、java中的多态
1,多态的体现 父类的引用指向了自己的子类对象. 父类的引用也可以接收自己的子类对象.2,多态的前提 必须是类与类之间有关系.要么继承,要么实现. 通常还有一个前提:存在覆盖. 3,多态的好处 多态的 ...
- 深度分析:理解Java中的多态机制,一篇直接帮你掌握!
Java中的多态 1 多态是什么 多态(Polymorphism)按字面的意思就是"多种状态".在面向对象语言中,接口的多种不同的实现方式即为多态.用白话来说,就是多个对象调用同一 ...
- Java中数据类型及其之间的转换
Java中数据类型及其之间的转换 基本的数据类型 基本类型有以下四种:1)int长度数据类型有:byte(8bits).short(16bits).int(32bits).long(64bits).2 ...
- java中四种引用类型
java中四种引用类型 今天看代码,里面有一个类java.lang.ref.SoftReference把小弟弄神了,试想一下,接触java已经有3年了哇,连lang包下面的类都不了解,怎么混.后来在 ...
- Java中数据类型及其之间的转换(转)
Java中数据类型及其之间的转换 基本的数据类型 基本类型有以下四种:1)int长度数据类型有:byte(8bits).short(16bits).int(32bits).long(64bits).2 ...
- java中四种引用类型(对象的强、软、弱和虚引用)
对象的强.软.弱和虚引用在JDK 1.2以前的版本中,若一个对象不被任何变量引用,那么程序就无法再使用这个对象.也就是说,只有对象处于可触及(reachable)状态,程序才能使用它.从JDK 1.2 ...
- 关于==和equals()方法&Java中string与char如何转换&String,StringBuffer
1.对于基本数据类型,可以直接使用==和!=进行内容比较 如:int x=30; int y=30; x==y; //true 基本数据类型 简单类型(基本类型) bo ...
- Java 中的多态,一次讲个够之接口实现关系中的多态
上文还没有写完,这一篇继续 Java 中的多态,一次讲个够之继承关系中的多态 https://www.cnblogs.com/qianjinyan/p/10824576.html 接口实现关系,和继承 ...
- 通过实例聊聊Java中的多态
Java中的多态允许父类指针指向子类实例.如:Father obj=new Child(); 那么不禁要发问?? 使用这个父类型的指针访问类的属性或方法时,如果父类和子类都有这个名称的属性或方法,哪 ...
随机推荐
- 【Java项目】GUI图形用户界面(不断更新中!)
<目录> 1 创建一个简单的窗体 2 如何进行事件监听 (1) 按钮监听 (2) 键盘监听 (3) 鼠标监听 3 容器 (1) 创建一个简单的对话框 (2) 创建一个简单的模态对话框 (3 ...
- React项目的最佳实践
项目代码 从零开始简书项目 从我第一次接触vue这个框架已经过了快一年的时间,陪伴我从前端小白到前端工程师,前端时间也是使用了 ts+vue这样的组合写代码,明显感觉vue与ts似乎没有产生比较好 ...
- macOS安装MongoDB
先在macOS里安装一个很好的插件 1.百度搜索homebrew 或 直接进入https://brew.sh 2.复制网页下面的命令符 /usr/bin/ruby -e "$(curl -f ...
- U盘直接读写(今天用到了)
#ifndef INVALID_SET_FILE_POINTER #define INVALID_SET_FILE_POINTER (DWORD)-1 #endif #define FILE_BEGI ...
- python学习之路-基本数据类型1 变量的概念、数字、字符串
1 什么是数据类型? 每种编程语言都有自己的数据类型,用于标识计算机可以认识的数据,Python中主要的数据类型为字符串,整数,浮点数,列表,元祖,字典,集合七种主要的数据类型,其中以列表,字典为最主 ...
- FPGA之CORDIC算法实现_代码实现(下)
关于FPGA之CORDIC算法的纯逻辑实现,博主洋葱洋葱“https://www.cnblogs.com/cofin/p/9188629.html”以及善良的一休军“https://blog.csdn ...
- 纪中OJ 2019.02.15【NOIP提高组】模拟 B 组 梦回三国 比赛题解(第一个)
声明 旁边的同学小 H(胡)对我说: “哟,比赛拿了 140,强!要知道,如果哥第三题 AC 了,哥就 230 了,你个废柴!!!(比赛实际分数 130 额呵)” 顿时,千万草泥马从我心中奔腾而过:你 ...
- Hive中Join的类型和用法
关键字:Hive Join.Hive LEFT|RIGTH|FULL OUTER JOIN.Hive LEFT SEMI JOIN.Hive Cross Join Hive中除了支持和传统数据库中一样 ...
- 20155308 2016-2017-2 《Java程序设计》实验3
20155308 2016-2017-2 <Java程序设计>实验3 实验内容 XP基础 XP核心实践 相关工具 实验步骤 (一)敏捷开发与XP 敏捷开发是一种以人为核心.迭代.循序渐进的 ...
- 20155317 实验二 Java面向对象程序设计
20155317 实验二 Java面向对象程序设计 实验内容 初步掌握单元测试和TDD 理解并掌握面向对象三要素:封装.继承.多态 初步掌握UML建模 熟悉S.O.L.I.D原则 了解设计模式 实验步 ...