向上造型与向下造型

一. 向上造型

父类引用 变量 = New 子类对象;

  1. 必须有继承关系

  2. 子类对父类方法进行重写

  3. 通过父类类型的引用变量调用子类重写之后的方法

向上造型的对象可以调用哪些方法看父类,具体的方法执行看子类(父类--目录 子类:正文)

【案例】

public class Main {
    public static void main(String[] args) {
        /*
        Pet pet:养一个宠物
        pet=new Dog():具体养只狗
        声明的类型是父类型,实际创建的是子类型,即:向上造型
         */
        Pet pet =new Dog();
        //向上造型的对象可以调用哪些方法看父类
        //方法真正执行看子类是否重写方法
        pet.eat();
        m(new Pet());
        m(new Dog());
    }
    public static void m(Pet p){
            p.eat();
    }
}
//宠物类
class Pet{
    public void eat(){
        System.out.println("在吃东西...");
    }
    public void sleep(){
        System.out.println("在睡觉...");
    }
}
//狗狗类
class Dog extends Pet{
    public void eat(){
        System.out.println("在哼哧哼哧地吃...");
    }
    public void bsrk(){
        System.out.println("在汪汪的叫...");
    }
}
//猫咪类
class Cat extends Pet{
    public void eat(){
        System.out.println("在优雅的吃...");
    }
    public void 磨爪子(){
        System.out.println("在呼呼的磨爪子...");
    }
}

二. 向下造型

子类引用 变量 = New 父类对象;

【注意】

  1. 需要强转
  2. 强转前用instanceof判断

【instanceof】

  1. 是Java中的关键字,是一个双目运算符,也是比较运算符中的一种,运算结果必然是boolean。
  2. 格式:Boolean res=对象名 instanceof 类名或者接口名;
  3. 作用:判断对象名是否是右边的类的类型或者接口的类型
  4. 注意:
    1. 左边只能是引用数据类型,不能是基本数据类型。
    2. 右边只能是类名或者接口名。如果是类名,当左边是当前类的对象或子类的对象,结果为true。

【使用到的地方】

在Spring中,通过context.getBean()传入id来获取Bean,返回的对象是Object,需要向下强转

posted @ 2020-08-04 10:11  仰观云  阅读(52)  评论(0编辑  收藏
Live2D