The access to the domain and static methods in Java is not polymorphism, and java is polymorphism.

Source: Internet
Author: User

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 ()

 

Related Article

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.