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,需要向下强转

  • 相关阅读:
    09-排序1 排序
    06-图3 六度空间
    06-图2 Saving James Bond
    06-图1 List Components
    04-树5 Complete Binary Search Tree
    03-树2 Tree Traversals Again
    PAT 05-树8 Huffman Codes
    Egret引擎的visible两次开关闭问题
    Egret的项目笔记(一)
    Egret屏幕适配【转】
  • 原文地址:https://www.cnblogs.com/juzhuxiaozhu/p/13431605.html
Copyright © 2011-2022 走看看