面向对象多态的解释 - 极悦
专注Java教育14年 全国咨询/投诉热线:444-1124-454
极悦LOGO图
始于2009,口口相传的Java黄埔军校
首页 hot资讯 面向对象多态的解释

面向对象多态的解释

更新时间:2021-08-25 11:40:18 来源:极悦 浏览812次

OOP(面向对象编程)的四个基本概念是继承、抽象、多态和封装。对于刚接触 OOP 的人来说,一开始要掌握 OOP 的最后3个基本概念可能有点困难(因为继承有点容易理解)。

多态性是对象具有多种形式的能力。

可以通过多于任何Java对象 一个IS-A测试被认为是多态- tutorialspoint。这意味着任何子类对象都可以在其父层次结构中采用任何形式的类,当然也可以采用任何形式的类。这实际上意味着子类对象可以分配给其父层次结构中的任何类引用,当然也可以分配给它本身。

例如:假设 Student 类是 Person 类的子类

学生 student = new Student() 
Person person = new Student()

当使用父类引用来引用子类对象时,OOP 中多态性的最常见用途发生。实际上这里是在谈论动态多态性(我将在下面描述)。

通常提到的多态性有两种类型。

动态多态

静态多态

动态多态

这也称为运行时多态性、动态绑定、运行时绑定、后期绑定和方法覆盖。这里有许多形式发生在 不同的类中。

这就是通常所说的“多态性”。让我简单地解释一下——

让我们假设在类层次结构(父子关系)中的类中有具有相同方法签名的方法,这些方法具有不同的形式(这称为方法覆盖)。

然后当一个对象被分配给一个类引用并且当该对象的一个​​方法被调用时,该对象的类中的方法就会被执行。不是引用类的方法(如果引用是父类)。

这里发生的事情是因为对象创建是在运行时完成的,所以应该执行的方法的形式(对象中的方法)只能在运行时决定。

例如:Java 代码

class Person {     
   public void教学(){ 
      System.out.println("人可以教"); 
   } 
} 
class Teacher extends Person { 
   public void talk() { 
      System.out.println("老师可以在学校教书"); 
   } 
} 
public class TestTeacher { 
   public static void main(String args[]) { 
      Person person = new Person(); //Person 引用和对象
      Person another_person = new Teacher(); //Person 引用,Teacher 对象
      Teacher Teacher = new Teacher(); //教师参考和obj.
      person.teach();//输出:人可以教
      // 在这里你可以看到Teacher 对象的方法被执行了
      even- // - 尽管使用了Person 引用  
      another_person.teach();//输出:老师可以在学校教书
      Teacher.teach();//输出:老师可以在学校教书
   } 
}

静态多态

这也称为编译时多态性、静态绑定、编译时绑定、早期绑定和方法重载。这里有许多形式发生在同一个类中。

如果我简单地解释一下..

这实际上是方法重载。方法重载是具有多个方法名称相同但参数不同(返回类型可能相同也可能不同)的方法。这里在调用方法时,编译器编译器根据调用时传递的参数选择要调用的方法。这发生在编译时。

例如:Java 代码

类计算器 { 
    void add(int a, int b) { 
         System.out.println(a+b); 
    } 
    void add(int a, int b, int c) { 
         System.out.println(a+b+c); 
    } 
}
public class Demo { 
   public static void main(String args[]) { 
       Calculatorcalculator = new Calculator();
       // 有 2 个参数的方法称为
       calculator.add(10, 20); //输出:30
       // 有 3 个参数的方法称为
       calculator.add(10, 20, 30); //输出:60 
   } 
}

以上就是极悦小编介绍的"面向对象多态的解释",希望对大家有帮助,想了解更多可查看Java教程。极悦在线学习教程,针对没有任何Java基础的读者学习,让你从入门到精通,主要介绍了一些Java基础的核心知识,让同学们更好更方便的学习和了解Java编程,感兴趣的同学可以关注一下。

提交申请后,顾问老师会电话与您沟通安排学习

免费课程推荐 >>
技术文档推荐 >>