Java多态理解(1)
来源:互联网 发布:制作名片软件 编辑:程序博客网 时间:2024/06/06 15:46
Java多态要满足3个条件:
1. 继承
2. 方法重写
3. 父类引用指向子类型对象(向上转型)
Animal.javapublic class Animal{public void eat(){System.out.println(“动物在吃!”);}}//----------------------Cat.javapublic class Cat extends Animal{//重写方法eatpublic void eat(){System.out.println(“猫吃鱼!”);}//子类方法movepublic void move(){System.out.println(“猫走猫步!”);}}//-----------------------Dog.javapublic class Dog extends Animal{//重写public void eat(){System.out.println(“狗啃骨头!”);}}/*关于java语言中的向上转型和向下转型1.向上转型(upcasting):子--->父2.向下转型(downcasting):父--->子注意:无论是向上转型还是向下转型,两个类之间必须要有继承关系。*/Test.javapublic class Test{public static void main(String[] args){/*向上转型:自动类型转换父类型引用指向子类型对象程序分两个阶段:编译阶段和运行阶段1.程序编译阶段只知道a1是一个Animal类型 2.程序在运行的时候堆中的实际对象是Cat类型*/Animal a1 = new Cat(); //自动类型转换/*1.程序在编译阶段:a1被编译器看做Animal类型 所以程序在编译阶段a1引用绑定的是Animal类中的eat方法(静态绑定)。2.程序在运行的时候堆中的对象实际上是Cat类型,而Cat类已经重写了eat方法,所以程序在运行阶段对象绑定的方法是Cat中的eat方法(动态绑定)。*/a1.eat(); //猫吃鱼//向下转型:强制类型转换Animal a2 = new Cat(); //向上转型/*要执行a2.move方法,怎么做?编译不通过(静态绑定的是Animal中的move,然而没有),解决方法:只能强制类型转换*///a2.move();Cat c1 = (Cat)a2;//强制类型转换c1.move();//判断以下程序是否正确?Animal a3 = new Dog();//Cat c2 = (Cat) a3; //编译通过,运行不通过,报错 java.lang.ClassCastException//所以,在强制类型转换的时候程序是存在风险的!//为了避免ClassCastException的发生,java引入instanceof运算符/*用法:1. instanceof运算符的运算结果是boolean类型2.(引用 instanceof 类型)--->true/false例如:(a instanceof Cat)如果结果是true,则a引用指向堆中的java对象是Cat类型*/Animal a4 = new Dog();System.out.println(a4 instanceof Cat);//false//推荐:在做向下转型的时候要使用instanceof运算符判断if(a4 instanceof Cat){Cat c2 = (Cat)a4;} }}
阅读全文
0 0
- Java 多态理解(1)
- Java多态理解(1)
- java--多态理解
- java多态理解
- java多态理解
- java 多态理解
- java多态理解
- Java多态理解
- java 多态理解
- java多态理解
- java讲义(九)多态理解
- java 多态理解(2)
- java 多态的理解(2)
- java多态的理解
- Java 多态的理解
- JAVA多态的理解
- java多态的理解
- java多态的理解
- Redis数据类型之Hash
- Java并发学习(十三)-ReentrantReadWriteLock学习
- 设计模式-抽象工厂模式
- 每天一道算法题——链表中倒数第k个结点
- Redis数据类型之Set
- Java多态理解(1)
- debian下安装LNMP(三)
- POJ 2010 Moo University
- Redis数据类型之SortedSet
- Android开发如何展示编译时间到apk
- alter table Waiting for table metadata lock, mysql 5.6 看不到锁在哪儿
- 读完它,明白了Context
- jsp隐含对象概述
- 心情札记 --- 人活着是为了天天开心快乐, 去憧憬和实现一切美好的事物