栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java的多态

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java的多态

目录
  • 一、多态
    • 1、多态的应用场景
    • 2、多态的含义
    • 3、实现多态的三要素
    • 4、多态的实现方式
    • 4、关于多态的含义解释(三要素)
      • 具有继承关系(略)
      • 子类重写父类方法
      • 使用父类的引用指向子类的对象
    • 5、引用类型的数据转换问题
  • 二、instanceof的使用
    • 1、instanceof的作用(比较数据类型)
    • 2、instanceof的使用语法
    • 3、代码示例

一、多态 1、多态的应用场景

同一种操作,由于条件不同,产生的结果也不同

2、多态的含义

多态:对象的多种形态

3、实现多态的三要素
  • 编写具有继承关系的父类和子类
  • 子类重写父类方法
  • 使用父类的引用指向子类的对象
4、多态的实现方式
  • 将父类作为形参
  • 将父类作为返回值
4、关于多态的含义解释(三要素) 具有继承关系(略) 子类重写父类方法

此博客有具体讲解:
Java的方法重写

使用父类的引用指向子类的对象

参照:5、引用类型的数据转换问题
示例:

// 创建一个以父类Pet作为对象类型的引用对象Dog
Pet dog = new Dog();

// 创建一个以父类Pet作为对象类型的引用对象Cat
Pet cat = new Cat();
5、引用类型的数据转换问题

例如:
假设:在一个(Pet)父类下有两个子类(Dog)(Cat)
  以父类为对象类型,可以创建父类本身的对象(也可以创建Dog类的对象,也可以创建Cat类的对象),但是其真实类型还是其本身,创建的 Dog类与创建的 Cat类不能互通
同一个引用类型,使用不同的实例而执行不同操作

代码示例:

package com.bdqn.ready;

public class Test {
    public static void main(String[] args) {
        // 创建一个以父类Pet作为对象类型的引用对象Pet
        Pet pet = new Pet();

        // 创建一个以父类Pet作为对象类型的引用对象Dog
        Pet dog = new Dog();

        // 创建一个以父类Pet作为对象类型的引用对象Cat
        Pet cat = new Cat();
    }
}

以上代码情况下,可以进行以下赋值

  • 非强制转换类型
    pet = dog;
    pet = cat;
    cat = dog;
    dog = cat;
  • 需要强制转换类型
    Dog dogs = (Dog)dog;
    Cat cats = (Cat)cat;

特别提示:
  向上转型:将父类的引用指向子类对象,称为向上转型,自动进行类型转换

Pet dog = new Dog();
二、instanceof的使用 1、instanceof的作用(比较数据类型)

instanceof可以实现数据类型的检测,如果检测符合返回true,检测不符合返回false。

2、instanceof的使用语法

变量名(或对象名) instanceof (数据类型)

3、代码示例
package com.bdqn.ready;

public class Test {
    public static void main(String[] args) {
        // 创建一个以父类Pet作为对象类型的引用对象Pet
        Pet pet = new Pet();

        // 创建一个以父类Pet作为对象类型的引用对象Dog
        Pet dog = new Dog();

        // 创建一个以父类Pet作为对象类型的引用对象Cat
        Pet cat = new Cat();


        // 检测数据类型
        if (dog instanceof Cat){
            System.out.println("dog 不是 Cat类型");
        } else if (dog instanceof Dog) {
            System.out.println("dog 是 Dog类型");
        }else {
            System.out.println("不是Cat类型和Dog类型");
        }
    }
}

代码执行结果

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1031438.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号