首页 > 其他分享 >多态

多态

时间:2023-01-02 17:11:18浏览次数:27  
标签:子类 void 多态 父类 方法 public

  Java学习很多年了,但精髓难以掌握,今天就将自己真正理解的章节阐述下,今天介绍下多态。

一、多态

  从字面上理解,多态就是一种类型表现为多种形态。Java中多态性分为两类。

  (1)方法多态性

    体现在方法重载和重写上,重载是值同一个方法名称,根据传入参数的类型、个数、顺序的不同,所调用的方法不同(说白了根据传入参数类型找对应方法)

    方法的覆写,指的是子类继承父类,子类和父类有同一个方法名(类型、个数、顺序完全相同),然后子类实例化赋给父类实例化,父类实例再调用子类方法

    名,如果有多个子类继承父类,方法名都相同但功能不同,这样父类可以根据同一个方法完成不同功能的实现。(意思后续根据多态语句例子再理解下)

  (2)对象多态性

    体现在父子类对象之间的转型上

    通过赋值后,父对象就可以根据当前被赋值的不同子对象,以子对象的特性加以运作。根据多态,相同的父类信息,发送给不同的子对象,每个子对象表现出

    不同的形态。如 a,b,c都继承 f ,他们四个都有move()同名不同功能的方法(如输出不同),然后 f f1; a a1 = new a(); 赋值:f1 = a1。这时候f.move()

    就是a的功能方法,同理b的和c的方法都可以被f访问到。

二、程序例子

(1)多态基本概念

class Person

{

  public void fun1()

  {

    System.out.println(“父类方法fun1()”);

  }

  public void fun2()

  {

    System.out.println("父类方法fun2()");

  }

}

class Student extends Person

{

  public void fun1()

  {

    System.out.println("子类方法fun1()");

  }

  public void fun3()

  {

    System.out.println(子类方法fun3());

  }

}

public class Test

public static void main(String[] args)
{

  Person p = new Student();

  p.fun1();

  p.fun2();

}

运行以上输出:
子类方法fun1()

父类方法fun2()

解释:Person p = new Student(); 声名一个子类对象赋值给父类对象,这就是向上转型,然后p.fun1();调用子类方法(子类和父类同名方法,子类覆写了父类方法),p.fun2(); 因为子类没有fun2()方法,所以所以直接访问父类自己的fun2()方法

 

(2)方法多态性

  方法多态性其实就是重载。

public class Ploy

{

  void sum(int i)

  {

    System.out.println(“数字和为: ”+i);

  }

  void sum(int i,int j)

  {

    System.out.println("数字和为: "+(i+j));

  }

public static void main(String[] args)

{

  Ploy p = new Ploy();

  p.sum(1);

  p.sum(2,2);

}

输出结果:

1

4

以上很容易理解,根据传入的参数来选择方法,然后得出对应传参的结果。

 

(3)使用多态

以下是多态的实例了,理解了此程序就是理解了多态。

class Animal{

  public void move(){

    System.out.println("动物运动");

  }

}

class Fish extends Animal{

  public void move(){

    System.out.println("鱼儿游");

  }

}

class Bird extends Animal{

  public void move(){

    System.out.println("鸟儿非");

  }

}

class Horse extends Animal{

  public void move(){

    System.out.println("马儿跑");

  }

}

public class TestPloy{

  public static void main(String[] args){

    Animal a;

    Fish f = new Fish();

    Bird b = new Bird();

    Horse h = new Horse();

    a=f;

    a.move();

    a=b;

    a.move();

    a=h;

    a.move();

  }

}

输出结果:

鱼儿游

鸟儿飞

马儿跑

根据以上输出结果可以看出,理解多态其实就是继承的反向的意思。继承是子类可以访问父类方法,多态是通过实例化赋值后父类访问子类同名方法。最后实现父类根据被哪个子类赋值了,输出哪个子类同名方法,看似多种形态的意思啦。

总而言之,多态条件:

1.子类继承父类

2.父子方法名都相同

3.子类实例化赋值给父类实例化

最后父类访问子类不同的方法,输出不同。yeah

标签:子类,void,多态,父类,方法,public
From: https://www.cnblogs.com/yangcheng01/p/yangcheng01.html

相关文章

  • 多态
    多态Students1=newStudent();Persons2=newStudent();Objects3=newStudent();Persons4=newPerson();s1s2s3都是Student类的对象,但各自能够调用哪......
  • Python类的多态和多态性
    一、多态多态指的是一类事物有多种形态,一个类有很多个子类,因而多态的概念是基于继承的序列数据类型有多种形态:字符串,列表,元组动物有多种形态:人,狗,猪1.动物的多种形态......
  • 多态
    多态是方法的多态父类和子类方法需要重写,父类引用指向子类对象实例static方法属于类,不属于实例(静态方法)final常量private方法以上出现均不存在多态......
  • 多态
    多态的前提和体现具有继承或者实现关系有方法的重写有父类的引用指向子类的对象 在多态中成员变量编译看左边,执行看左边,成员方法编译看左边,执行看右边,因为成员......
  • 【C++】虚函数与多态
    所谓多态,简单来讲就是指,不同的子类在继承父类后分别都重写覆盖了父类的方法。例如下例中:classA{public:voidf(){cout<<"这是A中的func"<<end......
  • Java多态
    什么是多态?同一个引用类型,使用不同的实例来执行不同的操作;同一个父类,使用不同的子类对象执行不同的操作。多态的实现:1、声明父类创建子类(向上转型:子类转为父类自动......
  • 15_Java筑基之Object类、多态
    15_Java筑基之Object类、多态一.Object类Object类是类层次结构的根类,每个类都使用Object作为超类(父类).1.equals()方法指示其他某个对象是否与此对象“相等”.示例代码;......
  • C# 继承、重载、多态
    写个测试,一看便知 父类:usingSystem.Collections;usingSystem.Collections.Generic;usingUnityEngine;publicclassComponent{publicvirtualvoidTest......
  • java中的多态
    多态中,编译看左边,运行看右边不多逼逼,直接上代码。代码:(我觉得我们老师给的代码好归好,但不太容易理解,我就私自改了点,顺眼多了)classParent{publicintmyValue=100;//Par......
  • 继承和多态——动手动脑
       TestInherits.javapackage Test; class Grandparent{    public Grandparent()   {       System.out.println("GrandparentCreat......