java中的多态 朱雀 2021-01-21 01:59 1396阅读 0赞 多态的理解就是同一种事物,具有不同的表现形式,举个例子,比如猫科,有老虎,狮子,豹子,也有可爱的小猫咪,它们形态各异,却同属于猫科,因为它们身上具有一些猫类所共有的特征。 多态的思想用到程序上,可以使同一个实现接口,使用不同的实例而执行不同的操作。这个操作,简直太有用了,比如我给老虎喂食,狮子喂食,小猫咪喂食,没有多态,我得分别给他们写一个喂食的方法,然后分别调用,但是有了多态之后,我直接写一个类,并声明一个喂食的方法,让他们分别去继承,并实现喂食的具体内容,我在调用的时候直接就用他们的父类的喂食方法,这样就省去了大量的代码量,而且结构更加清晰。 那么多态是如何实现的呢?首先要明确一点的是我们对对象的使用,都是建立在这个对象的引用之上, Cat tiger= new Tiger() 我们用老虎的父类,猫科去建立一个老虎的引用,当我们调用 tiger.feeding(),给老虎喂食的时候,这个引用回先去找子类的又没有重写feeding这个方法,如果有就调用,如果没有就调用父类的feeding方法,那这个子类的信息,是何时被保存在这个引用里面的?是创建new Tiger()的时候,每个类都有一个class对象,这个class对象会在第一次被创建实例的时候加载到jvm中去,然后用这个class去创建实例,所以子类Tiger的所有信息都被保存在class里面,而这个引用被tiger所持有。 但是多态也有一定的弊端,会导致类型信息丢失, 比如Tiger类里面有抓鹿这个方法,而猫科里面并没有这个方法,所以tiger这个引用就会无法调用抓鹿这个方法 举个详细的例子 package com.example.eurekaribbonclient.test; import java.util.Arrays; import java.util.List; /** * @ClassName test_1 * @Description TODO * @Author Mr.G * @Date 2018/9/17 10:13 * @Version 1.0 */ abstract class Shape{ void draw(){ System.out.println(this+".draw"); } abstract public String toString(); } class Circle extends Shape{ @Override public String toString() { return "Circle"; } public void drawCircle(){}; } class Square extends Shape{ @Override public String toString() { return "Square"; } public void drawSquare(){}; } class Triangle extends Shape{ @Override public String toString() { return "Triangle"; } public void drawTriangle(){}; } public class test_1 { public static void main(String[] args){ List<Shape> shapeList= Arrays.asList(new Circle(),new Square(),new Triangle()); for(Shape shape:shapeList){ shape.draw(); } //shapeList.get(0).drawCircle(); 编译报错 } } 值得注意的是 shaperList所持有的都是Object对象,因为所有类追根都来自Object,但是在具体使用的时候,会转为声明类型,在上面的那个例子声明类型就是Shape,这其实也是一种多态的表现
相关 Java中的多态 多态 一、概念 多态是面向对象程序设计(OOP)的一个重要特征,指同一个实体同时具有多种形式,即同一个对象,在不同时刻,代表的对象不一样,指的是对象的多种形态( ╰+攻爆jí腚メ/ 2024年03月31日 14:39/ 0 赞/ 66 阅读
相关 Java中的多态性 1. 概述 所有面向对象编程 (OOP) 语言都需要表现出四个基本特征:抽象、封装、继承和多态性。 在本文中,我们介绍了两种核心类型的多态性:静态或编译时多态性以及动态 阳光穿透心脏的1/2处/ 2024年03月16日 20:10/ 0 赞/ 54 阅读
相关 多态 java_多态-java Java 多态 多态是同一个行为具有多个不同表现形式或形态的能力。 多态就是同一个接口,使用不同的实例而执行不同操作。 多态的优点 三个必要条件 虚函数 重写 多 心已赠人/ 2022年10月23日 12:43/ 0 赞/ 343 阅读
相关 java中多态 (1)向上转型 \[java\] [ view plain][view plain] [ copy][view plain] [ print][view plain] [?] 野性酷女/ 2022年07月24日 06:12/ 0 赞/ 164 阅读
相关 Java中的_多态_接口_代理 一、抽象类 1.抽象类是以关键字abstract修饰的类,无法进行初始化 2.通过abstract修饰的方称为抽象方法,没有方法体,只有方 法的声明 迈不过友情╰/ 2022年06月09日 07:12/ 0 赞/ 263 阅读
相关 java中的多态 多态的体现 父类的引用指向了自己的子类对象。 父类的引用也可以接受自己的子类对象 多态的前提 必须是类与类之间有关系。要么 青旅半醒/ 2022年05月26日 11:55/ 0 赞/ 239 阅读
相关 Java教程24—Java中多态 编译时多态 运行时多态 Java的多态 多态性是面向对象程序设计功能之一,允许我们以不同的方式执行单个操作。 例如,假设我们有一个Animal有方法的类sound()。 因为这是一个通用的类 末蓝、/ 2022年05月13日 01:40/ 0 赞/ 235 阅读
相关 java中多态 多态的格式父 f=new 子(); 1、多态的前提 A:要有继承(父类子类)或者实现(接口)关系 B、要有方法的重写 没有不会报错,但是不写就会没有意义。 C、 £神魔★判官ぃ/ 2022年05月06日 03:14/ 0 赞/ 217 阅读
相关 Java中的多态简介 多态(Polymorphic),即是事物存在的多种形态。 前提: 1. 要有继承关系; 2. 要有方法重写; 3. 要有父类引用指向子类对象。 特点: 朱雀/ 2022年04月05日 06:10/ 0 赞/ 239 阅读
相关 java中的多态 多态的理解就是同一种事物,具有不同的表现形式,举个例子,比如猫科,有老虎,狮子,豹子,也有可爱的小猫咪,它们形态各异,却同属于猫科,因为它们身上具有一些猫类所共有的特征。 朱雀/ 2021年01月21日 01:59/ 0 赞/ 1397 阅读