zoukankan      html  css  js  c++  java
  • 向上造型与向下造型

    一. 向上造型

    父类引用 变量 = 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,需要向下强转

  • 相关阅读:
    python学习之列表和字典
    python学习之字符串(下)
    python学习之数字
    python学习之核心数据类型
    android 学习Layout布局的使用
    android学习SeekBar的使用
    android学习Gallery和ImageSwitch的使用
    android学习ScrollView的使用
    android学习ViewFlipper的使用
    C#怎么判断传入int值是否是枚举里面的值
  • 原文地址:https://www.cnblogs.com/juzhuxiaozhu/p/13431605.html
Copyright © 2011-2022 走看看