The access to the domain and static methods in Java is not polymorphism, and java is polymorphism.
1. Associating method calls with method subjects is called
2. During compilation, the binding (static) determines the type of the referenced object at the compilation stage.
3. runtime binding (dynamic binding) refers to determining the actual type of the referenced object during execution, and calling the corresponding method based on the actual type.
4. Except the static method and the final method (the private method belongs to the final method), all other methods are bound later. All methods in Java are implemented through dynamic binding for polymorphism.
5. The behavior of accessing a domain does not have polymorphism
package polymorphism;class SuperField {public int field = 1;public int getField() {return field;}}class SubField extends SuperField {public int field = 2;public int getField() {return field;}public int getSuperField() {return super.field;}}public class FieldPolymorphism {public static void main(String[] args) {SuperField sup = new SubField();System.out.println("sup.field = " + sup.field + ", sup.getField() = " + sup.getField());SubField sub = new SubField();System.out.println("sub.field = " + sub.field + ", sub.getField() = " + sub.getField() +", sub.getSuperField() = " + sub.getSuperField());}}
Output result:
Sup. field = 1, sup. getField () = 2
Sub. field = 2, sub. getField () = 2, sub. getSuperField () = 1
When the SubField object is converted to a Super reference, any domain access operation will be parsed by the compiler, so it is not a polymorphism. The SubField actually contains two fields called field: own and inherited from SuperField
Generally, the domain is set to private, and cannot be accessed directly or inherited. It is accessed by calling methods.
6. Accessing a static method does not have polymorphism and is not associated with a single object.
package polymorphism;class Super {public static String staticMethod() {return "Super staticMethod()";}}class Sub extends Super {public static String staticMethod() {return "Sub staticMethod()";}}public class StaticPolymorphism {public static void main(String[] args) {Super sup = new Sub();System.out.println(sup.staticMethod());System.out.println(Sub.staticMethod());}}
Output result:
Super staticMethod ()
Sub staticMethod ()