java基础-面向对象の多态
来源:互联网 发布:excel2007中编程例子 编辑:程序博客网 时间:2024/06/03 21:48
多态性指的是:一个事物的多种表性形态
方法的重载与重写也是一种表现
子类对象的多态性
前提:
类的继承
子类对父类方法的重写
程序运行时分为编译、运行
对于多态来说,编译时,看左边,将此引用变量理解为父类的类型
运行时,看右边,关注于真正的对象实体,子类的对象。那么执行的方法就是子类重写的
Person p1=new Man();(向上转型)
虚拟方法调用,通过父类的引用指向子类的对象实体,当调用方法时,实际执行的是子类重写父类的方法
P1.walk();
P1.walk();
Woman w =(Woman)p2;向下转型,使用强转符:()
注意:如果man转化成woman在运行的时候会报类型转化异常错,java.lang.ClassCastException
//instanceof
If (p1 instanceof Woman){
Woman w1=(Woman)p1;
W1.shopping();
}
If (p1 instanceof Man){
Man m1=(Man)p1;
m1.entertainment();
}
格式:对象a instanceof类A:判断对象a是否是A的一个实例,是的话返回true;否则返回false
若a是A的实例,那么a也一定是A类的父类的实例
父类的引用指向子类对象
package newpackage;//多态import java.util.concurrent.atomic.AtomicLong;import javax.management.InstanceAlreadyExistsException;public class TestAnimal {public static void main(String[] args) {TestAnimal t=new TestAnimal();//func的参数可以是任意的animal()父类或者旗下子类//父类对象指向子类引用t.func(new Animal());t.func(new Cat());t.func(new Dog());}public void func(Animal a) {a.eat();a.jump();//进行多态的判断if(a instanceof Dog){((Dog) a).wangwang();}else if(a instanceof Cat) {((Cat) a).catchMouse();}}}class Animal{String name;int age;public void eat(){System.out.println("animals eat");}public void jump(){System.out.println("animalsjump");}}class Dog extends Animal{public void eat() {System.out.println("Dogs eat");}public void jump() {System.out.println("Dogs jump");}public void wangwang(){System.out.println("Dogs wangwang");}}class Cat extends Animal{public void eat() {System.out.println("Cats eat");}public void jump() {System.out.println("Cats jump");}public void catchMouse(){System.out.println("Cats catch mouses");}}
0 0
- java基础-面向对象の多态
- java基础 面向对象
- Java面向对象基础
- java基础-面向对象
- java面向对象基础
- JAVA面向对象基础
- Java面向对象基础
- Java面向对象基础
- java基础----面向对象
- java 面向对象基础
- 【Java基础】面向对象
- java基础面向对象
- JAVA面向对象基础
- Java基础:面向对象
- java基础---面向对象
- Java基础--面向对象
- Java基础:面向对象
- Java基础--面向对象
- Linux 环境 简单启动 Java程序
- 内建模块-itertools
- android studio入门学习教程-认识gradle
- (function($){...})(jQuery)是什么意思
- javaweb学习总结(二十五)——jsp简单标签开发(一)
- java基础-面向对象の多态
- Android控件设置可点击
- 关于屏幕坐标转3D场景射线问题(屏幕位置转射线)
- 一个小栗子理解exit(1)与调用析构函数的关系
- 004-Vuforia实现AR产品中模型颜色的渐变效果
- 机器学习中的距离和相似性度量方法
- java常用日期处理函数
- JavaMail系列(三) 使用SMTP协议发送电子邮件
- 给 Android 开发者的 RxJava 详解