Java静态多态性和动态多态性有何区别?

Python011

Java静态多态性和动态多态性有何区别?,第1张

静态多态性的是程序在编译时,系统就能决定调用哪个函数,如重载。 \x0d\x0a动态多态性指在运行中才能动态确定操作指针所指的对象,主要通过虚函数和重写来实现。 \x0d\x0ajava 的多态机制遵循一个原则:当父类对象引用变量引用子类对象时,被引用对象的类型而不是引用变量的类型决定了调用谁的成员方法,但是这个被调用的方法必须是在超类中定义过的,也就是说被子类覆盖的方法 \x0d\x0a概念理解起来有点抽象。还是看个例子吧。 \x0d\x0a静态多态性: \x0d\x0aadd(int a)\x0d\x0aadd(int a,int b)\x0d\x0aadd(double a)\x0d\x0aadd(double a,double b)\x0d\x0a\x0d\x0a动态多态性 \x0d\x0apublic class A{ } \x0d\x0a\x0d\x0apublic class AB extends A{ } \x0d\x0a\x0d\x0apublic class AC extends A{ } \x0d\x0a\x0d\x0apublic class test{ \x0d\x0a go(A a)

java中,向上造型呈现的多态性仅仅针对成员函数,成员属性不具有多态性,例如:

Father fs = new Son()

fs.m1()//调用的是子类的函数

fs.a// 调用的是父类的属性