java多态实现动物叫唤_Java多态实现
向上转型:子类型-->父类型,又称为自动类型转换.
向下转型:父类型-->子类型,又称为强制类型转换.
//Animal.java
package qw;
public class Animal {
public void move()
{
System.out.println("动物在移动");
}
public void eat() {
System.out.println("动物在吃");
}
}
//Bird.java
package qw;
public class Bird extends Animal{
public void fly()
{
System.out.println("小鸟在飞");
}
public void eat() {
System.out.println("小鸟在吃东西");
}
}
//Cat.java
package qw;
public class Cat extends Animal{
public void move()
{
System.out.println("猫在移动");
}
public void catchMouse()
{
System.out.println("猫在捉老鼠");
}
}
//Test.java
package qw;
public class Test {
public static void main(String[] args) {
Animal a1 = new Animal();
a1.move();
//向上转型(子对象向父对象转型),a2使用的是继承的方法,可使用方法覆盖父类继承下来的方法.
//1,编译阶段编译器检查a2这个引用的数据类型为Animal,由于Animal.class字节码当中有move()方法
//所以编译通过了,这个阶段成为静态绑定
//2,在程序运行阶段,由于JVM堆内存真实存在的对象是Cat对象,所以一定调用的是Cat对象的move()方法,这个过程
//称为动态绑定
//3.无论Cat类有没有重写方法,运行阶段调用的一定是Cat类的move()方法,因为JVM堆内存中真实存在的对象是Cat对象.
Animal a2 = new Cat();
a2.move();
a2.eat();
//如果想访问子对象特有的方法,需强制换成子对象,即向下转型(父对象向子对象转型)
if(a2 instanceof Cat) {
Cat a3 = (Cat)a2;
a3.catchMouse();
}
else {
Bird a3 = (Bird) a2;
a3.fly();
}
}
}
运行结果:
特点:无论是向上转型还是向下转型,两种类型之间一定要有继承关系,且具有面向抽象编程的特性,.
多态作用:降低程序的耦合度,提高程序的拓展力.
原文:https://blog.51cto.com/14472348/2476476
java多态实现动物叫唤_Java多态实现相关推荐
- java多态实现动物叫唤_Java 多态 ——一个案例 彻底搞懂它
最近,发现基础真的很重要.比如,Java中多态的特性,在学习中就是很难懂,比较抽象的概念.学的时候就犯糊涂,但日后会发现,基础在日常工作的理解中占有重要的角色. 下面,我将用一个代码实例,回忆和巩固多 ...
- java多态的应用场景_Java多态总结
写在前面 由于找工作的原因,最近几个月都没有更新博客了...这篇可能是今年最后一篇总结类的博文了,希望能够写的好点吧 _ 至此,博客中java基础方面的内容零零散散地也逐渐总结完了,基本上面试经常问到 ...
- java 父类引用子类对象_java多态,如何理解父类引用指向子类对象
java多态,如何理解父类引用指向子类对象 要理解多态性,首先要知道什么是"向上转型". 我定义了一个子类Cat,它继承了Animal类,那么后者就是前者是父类.我可以通过 C ...
- java的多态是什么意思_java多态是什么意思?实例分享
相信很多学习java的人对于java多态是非常了解的,它的知识点也是非常重要的.今天就来为大家介绍一下,java多态是什么意思?并且用实例分享出来,一起来了解一下吧. 首先,多态指同一个实体同时具有多 ...
- java 多态判断非空_Java 多态
父类的属性变量(例如变量 int a)可以被继承,同时在子类中也会同时继承该变量(super.int a,继承的变量),子类中也可以再次声明一个同名(可以同类型)的变量(double a,自己声明的同 ...
- java使用多态打印个人信息_java 多态 回顾
写了有段时间java了,回头看看最基础的继承问题,挺有意思,把之前不懂的理顺了 public class App9 { public String show(D obj) { return " ...
- java计算面积的方法_JAVA多态计算面积main函数调用方法
public static void main(String[] args) { Shape shape; Scanner input = new Scanner(System.in); System ...
- java 向下转型运行时错误_java多态和向下转型问题。
Q1:运行结果中dog2和dog3的引用都指向Dog,且引用地址都一样,但是为什么dog2为什么就不能用eat(i)方法呢?Q2:为什么运行结果都是true?Q3:我开始是Animalsdog2=ne ...
- java多态 求形状面积_JAVA多态计算面积main函数调用方法
public static void main(String[] args) { Shape shape; Scanner input = new Scanner(System.in); System ...
最新文章
- 深挖BAT内部级别和薪资待遇
- 【数据结构】数组和广义表
- Cube 技术解读 | 支付宝新一代动态化技术架构与选型综述
- mysql varchar java_关于MySQL varchar类型最大值,原来一直都理解错了
- malloc/free 和 new/delete的联系和区别
- 线性代数:线性方程组的解
- 机器学习-贝叶斯网络
- linux之cp强制复制文件
- 两个框架之间的数据类型转换,需要桥接技术
- python数字合并提高_python-给定相关数字列表,合并相关列表以创...
- Could not transfer artifact org.springframework.boot:spring-boot-starter-parent:pom:2.3.0.RELEAS错误解决
- prolog与python_讲解:SENG201、Software、Python,Java/c++Web|Prolog
- 罗永浩曾想自杀,戴威债务缠身仍不认输......这是无数创业者的生存现状
- Kademlia详解 (转贴NeoRagex2002)
- 对虎牙直播进行爬取,并对信息进行处理分析
- 手机到底应该选128G还是64G内存呢?其实很多人都选错了
- 《 编程导论——以Python为舟》学习笔记(一)
- 成品直播源码推荐,登录界面实现插入背景
- adapt和adopt的区别_如何一句话分清adapt ,adopt 和adept
- 程序设计思维 B - 猫猫向前冲(拓扑排序、Kahn算法)