当前位置: 首页 > 知识库问答 >
问题:

Java中的动态多态性和静态多态性有什么区别?

雍焱
2023-03-14

有人能提供一个简单的例子来解释Java中动态多态性和静态多态性之间的区别吗?

共有1个答案

刘才俊
2023-03-14

多态性

1.静态绑定/编译时绑定/早期绑定/方法重载。(在同一个类中)

2.动态绑定/运行时绑定/后期绑定/方法重写。(在不同的类中)

class Calculation {  
  void sum(int a,int b){System.out.println(a+b);}  
  void sum(int a,int b,int c){System.out.println(a+b+c);}  

  public static void main(String args[]) {  
    Calculation obj=new Calculation();  
    obj.sum(10,10,10);  // 30
    obj.sum(20,20);     //40 
  }  
}  
class Animal {    
   public void move(){
      System.out.println("Animals can move");
   }
}

class Dog extends Animal {

   public void move() {
      System.out.println("Dogs can walk and run");
   }
}

public class TestDog {

   public static void main(String args[]) {
      Animal a = new Animal(); // Animal reference and object
      Animal b = new Dog(); // Animal reference but Dog object

      a.move();//output: Animals can move

      b.move();//output:Dogs can walk and run
   }
}
 类似资料:
  • 本文向大家介绍静态和动态多态性有什么区别?,包括了静态和动态多态性有什么区别?的使用技巧和注意事项,需要的朋友参考一下 多态是对象采取多种形式的能力。当使用父类引用来引用子类对象时,会在OOP中最常见地使用多态。被子类覆盖的方法称为运行时多态。JVM确定要在运行时而不是编译时执行的方法。在参数不同的同一类中,方法重载是静态多态的一个示例,编译器在编译时就知道要执行哪种方法。

  • 问题内容: 谁能提供一个简单的示例来说明Java中动态和静态多态性之间的区别? 问题答案: 多态性 1.静态绑定/编译时绑定/早期绑定/方法重载。(在同一类中) 2.动态绑定/运行时绑定/后期绑定/方法重写(在不同的类中) 重载示例: 首要示例:

  • 我在比较C++多态性的以下方法的性能: 方法[1]。使用boost变体的静态多态性,每个方法都有一个单独的访问者method[2]。静态多态性使用boost变体,单个访问者调用不同的方法,使用方法重载方法[3]。平原老动态多态性 一些发现: 方法[1]似乎明显优于方法[2]和[3] 方法[3]在大多数情况下都优于方法[2] 我的问题是,为什么方法[2]在我使用一个访问者但使用方法重载来调用正确的方

  • 多态性是面向对象编程的又一个重要特征,它是指在父类中定义的属性和方法被子类继承之后,可以具有不同的数据类型或表现出不同的行为,这使得同一个属性或方法在父类及其各个子类中具有不同的含义。 对面向对象来说,多态分为编译时多态和运行时多态。其中编译时多态是静态的,主要是指方法的重载,它是根据参数列表的不同来区分不同的方法。通过编译之后会变成两个不同的方法,在运行时谈不上多态。而运行时多态是动态的,它是通

  • 问题内容: 出于好奇,这是一个问题。 我知道,当我们通过其超类的引用调用子类对象的重写方法时,JVM会重视对象的类型而不是引用的类型。 这是我的简单代码: 如预期的那样,我得到了输出: 现在我的问题是,有什么方法可以使用引用h调用超类eat()方法,而不是子类?我知道这是一个与多态性定律背道而驰的问题,但是您永远不知道何时会需要这样做。 我试图将参考h转换为Animal,但没有运气。有任何想法吗?

  • 这是一个出于好奇的问题。 我知道,当我们通过引用子类对象的超类来调用子类对象的重写方法时,JVM重视对象的类型,而不是引用的类型。 这是我的简单代码: 正如预期的那样,我得到输出: 现在我的问题是,我们有没有办法使用引用h来调用超类ate()方法,而不是子类一?我知道这是一个有点违反多态定律的问题,但你永远不知道什么时候需要这样做。 我试着用打字机把参考h打到动物身上,但没有成功。有什么想法吗?