今天小编就为大家带来一篇有关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();
}
}
}
运行结果:
以上就是实现Java多态的例子,代码详细清楚,如果在日常工作遇到这个问题,希望你能通过这篇文章解决问题。如果想了解更多相关内容,欢迎关注创新互联行业资讯频道!
另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。
售后响应及时
7×24小时客服热线数据备份
更安全、更高效、更稳定价格公道精准
项目经理精准报价不弄虚作假合作无风险
重合同讲信誉,无效全额退款