Java基础面向对象三个特征:多态

Posted jcl226

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java基础面向对象三个特征:多态相关的知识,希望对你有一定的参考价值。

一、多态的概述

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

    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基础面向对象三个特征:多态的主要内容,如果未能解决你的问题,请参考以下文章

java面向对象的三大特征?

C++作为面向对象语言的三个基本特征:封装,继承和————

Java基础——面向对象三大特征(继承封装多态)

java的三个基本特征是啥?

java面向对象的基本形式,封装继承多态

面向对象的三个特征:封装(抽象)继承多态