Class Part1_InheritancePolymorphism
java.lang.Object
Part1_InheritancePolymorphism
Demonstrates inheritance-based polymorphism resolved via the JVM's
per-class virtual method table (vtable).
Disassembled bytecode (javap -c):
Compiled from "Part1_InheritancePolymorphism.java"
public class Part1_InheritancePolymorphism {
public Part1_InheritancePolymorphism();
Code:
0: aload_0
1: invokespecial #1 // Method java/lang/Object."<init>":()V
4: return
public static void makeSpeak(Animal);
Code:
0: aload_0
1: invokevirtual #7 // Method Animal.speak:()V
4: return
public static void main(java.lang.String[]);
Code:
0: new #12 // class Dog
3: dup
4: invokespecial #14 // Method Dog."<init>":()V
7: astore_1
8: new #15 // class Cat
11: dup
12: invokespecial #17 // Method Cat."<init>":()V
15: astore_2
16: aload_1
17: invokestatic #18 // Method makeSpeak:(LAnimal;)V
20: aload_2
21: invokestatic #18 // Method makeSpeak:(LAnimal;)V
24: return
}
-
Constructor Summary
Constructors -
Method Summary
-
Constructor Details
-
Part1_InheritancePolymorphism
public Part1_InheritancePolymorphism()
-
-
Method Details
-
makeSpeak
Dynamic Dispatch via Class vtable.- Parameters:
a- base-typed reference; the concrete override invoked is resolved at runtime viainvokevirtual.
-
main
-