今天做了一个测试的题目,发现自己还是很多问题没有静下心来做。很多问题是可以自己解决的但是自己一是没有读清题意,二是自己心里太急躁了。所以这个要自己应以为鉴!
对象的转型问题其实并不复杂,我们记住一句话:“父类引用指向子类对象”。
java中对象的转型分为向上转型和向下转型
1.1、定义
子类引用的对象转换为父类类型称为向上转型。通俗地说就是是将子类对象转为父类对象。此处父类对象可以是接口
1.2、解释
比如说我有两个类,一个是父类Animal,另一个是Bird类为子类。
Animal b = new Bird();
这就是upcasting,向上转型。这时b就是执行以恶搞Bird对象。
1.3、实例
package com.zyh.test;
public class Animal {
public void eat(){
System.out.println("animal eating....");
}
}
class Bird extends Animal{
public void eat(){
System.out.println("Bird eating...");
}
public void fly(){
System.out.println("Bird flying...");
}
}
class Main{
public static void main(String[] args){
Animal b1 = new Bird();
b1.eat();
// b1.fly(); b虽然指向子类对象,但此时丢失了fly方法
doSleep(new Male());
doSleep(new Female());
}
public static void doSleep(Human h){
h.sleep();
}
}