zoukankan      html  css  js  c++  java
  • 【Java基础】面向对象三个特征(3):多态

    一、多态的概述

      多态:一个对象拥有多种形态

        eg:小明是一个学生(学生形态),同时也是一个人(人类形态)

      多态的格式与使用:父类引用指向子类对象

        格式:父类名称 对象名 = new 子类名称()

           接口名称 接口名 = new 实现类名称()

      多态中访问成员变量、成员方法:

        成员变量:编译看左边,运行看左边

        成员方法:编译看左边,运行看右边

      多态的好处:可以使程序有良好的扩展,并可以对所有类的对象进行通用处理

    public class Demo01test {
        public static void main(String[] args) {
    
            //格式:父类引用指向子类对象
            Animal cat = new Cat();
            System.out.println(cat.num);
    
            //访问成员方法
            cat.eat();//父子都有,优先用子
    
            cat.run();//子类没有,父类有,向上找到父类
            //无法调用子类特有的方法
            // 编译看左边,左边是父类,父类没有这个方法,所有编译报错
            //cat.catchMouse();错误写法!!!
            
        }
    }

    二、向上、向下转型

      向上转型:

        格式(与多态的写法一致): 父类名称 对象名 = new 子类名称()

        含义:右边创建一个子类对象,但把它当做父类对象来看待使用;

        注意事项:向上转型一定是安全的(子类转向父类,子类小范围转向父类大范围)

      向下转型:

        格式:子类名称 对象名 = (子类名称) 父类对象

        含义:将父类对象,转向本来的子类对象

    三、instanceof关键字

      通过此关键字,可以判断父类引用的对象本来属于哪个子类。

    public class Demo02Test {
        public static void main(String[] args) {
            Animal animal = new Dog();
            judge(animal);
        }
    
        public static void judge(Animal animal){
            if (animal instanceof Cat){
                Cat cat = (Cat) animal;
                cat.catchMouse();
            }
            if(animal instanceof Dog){
                Dog dog = (Dog) animal;
                dog.breakHome();
            }
        }
    万丈高楼平地起。
  • 相关阅读:
    简单到一步安装 xgboost (Windows 64位环境)——anaconda环境
    python中的字符数字之间的转换函数
    Python之基础练习题
    SAS基础语句
    linux 查询目录大小并排序
    loadrunner get、Post 请求的一个java vuser 脚本
    mysql 解析 json格式的字段
    java 使用fast json 与 Map List互相转换
    windows 系统 端口数调整 比避免出现 time_wait连接状态过多
    java 枚举 enum使用
  • 原文地址:https://www.cnblogs.com/jcl226/p/13326732.html
Copyright © 2011-2022 走看看