iis服务器助手广告
返回顶部
首页 > 资讯 > 精选 >Java多态数组如何使用
  • 633
分享到

Java多态数组如何使用

2023-06-30 14:06:32 633人浏览 八月长安
摘要

这篇文章主要讲解了“Java多态数组如何使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Java多态数组如何使用”吧!多态概述多态概念:所谓多态就是指程序中定义的引用变量所指向的具体类型和

这篇文章主要讲解了“Java多态数组如何使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Java多态数组如何使用”吧!

多态概述

多态概念:所谓多态就是指程序中定义的引用变量所指向的具体类型和通过该引用变量发出的方法调用在编程时并不确定,而是在程序运行期间才确定,即一个引用变量到底会指向哪个类的实例对象,该引用变量发出的方法调用到底是哪个类中实现的方法,必须在由程序运行期间才能决定。因为在程序运行时才确定具体的类,这样,不用修改源程序代码,就可以让引用变量绑定到各种不同的类实现上,从而导致该引用变量调用的具体方法随之改变,即不修改程序代码就可以改变程序运行时所绑定的具体代码,让程序可以选择多个运行状态,这就是多态性。

多态存在的三个必要条件

要有继承关系的存在(实现接口也是一种继承关系)

要有方法的重写

要有父类引用指向子类对象

注:

运行方法看运行类型,属性看编译类型

在方法中调用属性,无特殊情况为本类属性

若类型中没有调用的方法,遵循向上查询

1.向上转型

对象的向上转型,其实就是多态写法:

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

  含义:右侧创建了一个子类对象,把它当作父类来看待使用。

Person person=new student();

          创建了一个学生对象,当作人看待,没有问题。
          此时的编译类型为person,运行类型为学生;

注意事项:向上转型一定是安全的。从小范围转向了大范围,从小范围的猫,向上转换成为更大范围的动物

2.向下转型

对象的向下转型,其实就是一个还原的动作:

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

   含义:将子类还原,还原成为本来的子类对象

Cat cat =(Cat) animal;//本来是猫,向上转型成为动物,还原回来成为本来的猫 注意事项:

   a.必须保证对象本来创建的时候就是猫,才能向下转型成为猫

   b.如果对象创建的时候不是猫,现在非要向下转型成为猫,就会报错

多态数组

建立一个polyArr包

Arrtest.java

package com.polyArr;public class Arrtest {    public static void main(String[] args) {        //父类的引用可以指向子类的对象        Person []p=new Person[5];        p[0]=new Person("aaa",15);        p[1]=new Student("asas",16, 55);        p[2]=new Student("ccc",17, 66);        p[3]=new Teacher("nnn",18, 2000);        p[4]=new Teacher("mmm",19, 6666);        for(int i=0;i< p.length;i++)        {            //动态绑定机制            //person[i]编译类型是Person,运行类型是根据实际情况判断的            System.out.println(p[i].say());        }    }}

Person.java

package com.polyArr;public class Person {    private String name;    private int age;    public Person(String name, int age) {        this.name = name;        this.age = age;    }    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }    public int getAge() {        return age;    }    public void setAge(int age) {        this.age = age;    }    public String say(){        return "name="+name+" age="+age;    }}

Student.java

package com.polyArr;public class Student extends Person{    private double score;    public Student(String name, int age, double score) {        super(name, age);        this.score = score;    }    public double getScore() {        return score;    }    public void setScore(double score) {        this.score = score;    }    public String say(){        return super.say()+" score="+score;    }}

Teacher.java

package com.polyArr;public class Teacher extends Person {    private int salary;    public Teacher(String name, int age, int salary) {        super(name, age);        this.salary = salary;    }    public int getSalary() {        return salary;    }    public void setSalary(int salary) {        this.salary = salary;    }    public String say(){        return super.say()+" salary="+salary;    }}

运行结果

Java多态数组如何使用

多态数组+向下转型

instanceof关键字

运算符是用来在运行时指出对象是否是特定类的一个实例。instanceof通过返回一个布尔值来指出,这个对象是否是这个特定类或者是它的子类的一个实例。

用法: result = object instanceof class

result为boolean类型

参数:

Result:布尔类型。

Object:必选项。任意对象表达式。

Class:必选项。任意已定义的对象类。

说明:

如果 object 是 class 的一个实例,则 instanceof 运算符返回 true。如果 object

不是指定类的一个实例,或者 object 是 null,则返回 false。

但是instanceof在Java的编译状态和运行状态是有区别的;

注:

在编译状态中,class可以是object对象的父类,自身类,子类。在这三种情况下Java编译时不会报错。

在运行转态中,class可以是object对象的父类,自身类,不能是子类。在前两种情况下result的结果为true,最后一种为false。但是class为子类时编译不会报错。运行结果为false。

建立一个polyArr包

Arrtest.java

package com.polyArr;public class Arrtest {    public static void main(String[] args) {        //父类的引用可以指向子类的对象        Person []p=new Person[5];        p[0]=new Person("aaa",15);        p[1]=new Student("asas",16, 55);        p[2]=new Student("ccc",17, 66);        p[3]=new Teacher("nnn",18, 2000);        p[4]=new Teacher("mmm",19, 6666);        for(int i=0;i< p.length;i++)        {            //动态绑定机制            //person[i]编译类型是Person,运行类型是根据实际情况判断的            System.out.println(p[i].say());            if(p[i] instanceof Student)            {                Student t1=(Student) p[i];                System.out.println(t1.learn());            }            else if(p[i] instanceof Teacher)            {                Teacher t1=(Teacher) p[i];                System.out.println(t1.teach());            }        }    }}

Person.java

package com.polyArr;public class Person {    private String name;    private int age;    public Person(String name, int age) {        this.name = name;        this.age = age;    }    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }    public int getAge() {        return age;    }    public void setAge(int age) {        this.age = age;    }    public String say(){        return "name="+name+" age="+age;    }}

Student.java

package com.polyArr;public class Student extends Person{    private double score;    public Student(String name, int age, double score) {        super(name, age);        this.score = score;    }    public double getScore() {        return score;    }    public void setScore(double score) {        this.score = score;    }    public String say(){        return super.say()+" score="+score;    }public String learn(){        return getName()+"正在听讲";    } }

Teacher.java

package com.polyArr;public class Teacher extends Person {    private int salary;    public Teacher(String name, int age, int salary) {        super(name, age);        this.salary = salary;    }    public int getSalary() {        return salary;    }    public void setSalary(int salary) {        this.salary = salary;    }    public String say(){        return super.say()+" salary="+salary;    }    public String teach(){        return getName()+"正在上课";    }}

运行结果

Java多态数组如何使用

感谢各位的阅读,以上就是“Java多态数组如何使用”的内容了,经过本文的学习后,相信大家对Java多态数组如何使用这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!

--结束END--

本文标题: Java多态数组如何使用

本文链接: https://www.lsjlt.com/news/329689.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Java多态数组如何使用
    这篇文章主要讲解了“Java多态数组如何使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Java多态数组如何使用”吧!多态概述多态概念:所谓多态就是指程序中定义的引用变量所指向的具体类型和...
    99+
    2023-06-30
  • Java实例讲解多态数组的使用
    目录多态概述1.向上转型2.向下转型多态数组Arrtest.javaPerson.javaStudent.javaTeacher.java多态数组+向下转型instanceof关键字...
    99+
    2024-04-02
  • Java中如何使用对象数组实现接口的多态性?
    Java中的多态性是面向对象编程中的一个重要概念,它允许不同的对象通过同一个接口来实现不同的行为。在Java中,我们可以使用对象数组来实现接口的多态性,下面我们将详细介绍这个过程。 首先,我们需要定义一个接口,以便我们可以在不同的类中实现它...
    99+
    2023-11-09
    接口 对象 数组
  • java如何使用数组
    这篇文章主要为大家展示了“java如何使用数组”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“java如何使用数组”这篇文章吧。使用简单数组(1)创建一个名为T0...
    99+
    2024-04-02
  • C++中如何使用动态数组
    这篇文章将为大家详细讲解有关C++中如何使用动态数组,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。C++动态数组相关操作代码如下:#include< iostream>...
    99+
    2023-06-17
  • java如何创建动态数组
    在Java中,可以使用ArrayList类来创建动态数组。 要创建一个动态数组,可以按照以下步骤进行操作: 导入ArrayList...
    99+
    2023-10-26
    java
  • java如何实现动态数组
    这篇文章主要介绍了java如何实现动态数组,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。具体内容如下数组最大的优点︰快速查询。scores[2]。数组最好应用于“索引有语意”...
    99+
    2023-06-20
  • Java和C语言如何使用静态语言实现动态数组
    这篇文章将为大家详细讲解有关Java和C语言如何使用静态语言实现动态数组,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。JAVA版JAVA自带了一个集合类ArrayList,可以实现动态数组的功能,相比原生...
    99+
    2023-05-31
    java c语言
  • php多维数组如何使用
    PHP是一种常见的服务器端脚本语言,广泛应用于Web开发领域。在PHP中,多维数组是一种非常重要的数据类型,可以用来存储和处理复杂的数据结构。本文将介绍PHP多维数组的基本概念、创建和访问方式以及常用的操作方法。1.多维数组的概念多维数组是...
    99+
    2023-05-19
  • C++多态如何使用
    本文小编为大家详细介绍“C++多态如何使用”,内容详细,步骤清晰,细节处理妥当,希望这篇“C++多态如何使用”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。多态多态离不开继承,首先来定义一个基类 Anim...
    99+
    2023-07-02
  • C#二维数组与多维数组如何使用
    这篇文章主要介绍“C#二维数组与多维数组如何使用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“C#二维数组与多维数组如何使用”文章能帮助大家解决问题。C# 中同样支持多维数组(也可称为矩形数组),它...
    99+
    2023-07-05
  • Java IDE中如何使用数组?
    在Java编程中,数组是一种非常重要的数据结构。它可以存储一组相同类型的数据,而且我们可以使用下标来访问数组中的元素。在Java IDE中,使用数组也非常简单,我们可以通过一些快捷键或者菜单来创建、修改和使用数组。 创建数组 在Java ...
    99+
    2023-09-19
    ide 数组 npm
  • C语言中如何使用动态数组
    这篇文章主要介绍“C语言中如何使用动态数组”,在日常操作中,相信很多人在C语言中如何使用动态数组问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”C语言中如何使用动态数组”的疑惑有所帮助!接下来,请跟着小编一起来...
    99+
    2023-06-16
  • java中的动态数组如何定义
    在Java中,动态数组可以使用 ArrayList 类来定义。ArrayList 是 Java 中的一个内置类,它实现了 List ...
    99+
    2024-02-29
    java
  • java如何创建一个动态数组
    在Java中,可以使用`ArrayList`类来创建动态数组。`ArrayList`类是Java集合框架中的一部分,它可以自动调整大...
    99+
    2023-09-15
    java
  • 如何使用php查询多组数据
    PHP是一种广泛使用的开源脚本语言,它最初是作为一种服务器脚本语言来设计的,主要用于网站开发和日常网页操作。在PHP中,查询多组数据是一项非常重要的任务,因为它让你能够从数据库中检索多个记录,并将它们用于执行各种操作,包括数据分析、报表制作...
    99+
    2023-05-14
    php 数据库
  • 如何在JavaScript中使用Java数组?
    当我们在进行JavaScript开发时,有时候需要使用Java数组,这时我们该怎么办呢?在本文中,我们将会介绍如何在JavaScript中使用Java数组。 Java数组是Java中最基本的数据结构之一,它可以存储一组相同类型的数据。在Ja...
    99+
    2023-10-25
    数组 javascript 函数
  • Java 和 Unix 中如何使用数组?
    数组是一种数据结构,它是由相同类型的元素组成的集合。在编程中,数组是非常常见的数据类型。Java 和 Unix 都支持数组,但是它们在使用上有所不同。 Java 中使用数组 Java 中的数组是一个对象,它可以存储相同类型的元素。在 Ja...
    99+
    2023-10-06
    unix 数组 numpy
  • 如何在Django中使用Java数组?
    Django是一个流行的Python Web框架,它提供了许多强大的功能,使开发Web应用程序变得更加容易。在许多Web应用程序中,Java数组也是非常常见的数据类型。在本文中,我们将探讨如何在Django中使用Java数组。 1.在Dja...
    99+
    2023-10-03
    数组 linux django
  • vue3动态组件如何使用
    这篇“vue3动态组件如何使用”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“vue3动态组件如何使用”文章吧。问题:为什么v...
    99+
    2023-07-05
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作