码迷,mamicode.com
首页 > 编程语言 > 详细

【Java基础】面向对象三个特征(3):多态

时间:2020-07-17 09:16:58      阅读:65      评论:0      收藏:0      [点我收藏+]

标签:col   安全   良好的   编译报错   注意   成员方法   nim   变量   学生   

一、多态的概述

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

    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();
        }
    }

 

【Java基础】面向对象三个特征(3):多态

标签:col   安全   良好的   编译报错   注意   成员方法   nim   变量   学生   

原文地址:https://www.cnblogs.com/jcl226/p/13326732.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!