基于Java中对域和静态方法的访问不具有多态性(实例讲解)
2017-10-10 08:36
756 查看
1.将方法调用同方法主体关联起来被称为
2.编译期绑定(静态)是在程序编译阶段就确定了引用对象的类型
3.运行期绑定(动态绑定)是指在执行期间判断所引用对象的实际类型,根据其实际的类型调用其相应的方法
4.除了static方法和final方法(private方法属于final方法),其他所有方法都是后期绑定,Java中所有的方法都是通过动态绑定来实现多态
5.访问某个域的行为不具有多态性
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()); } }
输出结果:
sup.field = 1, sup.getField() = 2
sub.field = 2, sub.getField() = 2, sub.getSuperField() = 1
当SubField对象转型为Super引用时,任何域访问操作都将由编译器解析,因此不是多态的,SubField实际包含两个称为field的域:自己的和从SuperField处继承来的
通常将域设置成private,不能直接访问,也不能被继承,通过调用方法来访问
6.访问某个静态方法不具有多态性,不与单个对象相关联
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()); } }
输出结果:
Super staticMethod()
Sub staticMethod()
以上这篇基于Java中对域和静态方法的访问不具有多态性(实例讲解)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。
您可能感兴趣的文章:
相关文章推荐
- Java中对域和静态方法的访问不具有多态性
- java中的方法,静态方法,实例方法,构造方法,自定义方法,以及修饰符访问
- JNI/NDK开发指南(六)——C/C++访问Java实例方法和静态方法
- JNI/NDK开发指南(五)---C/C++访问Java实例方法和静态方法
- 内部类访问外部类的变量必须是final吗,java静态方法中不能引用非静态变量,静态方法中不能创建内部类的实例
- Java中的静态方法具有多态性吗?
- Java静态方法不具有多态性详解
- java 程序加载过程---3--类中申明同时申明类的静态对象 创建类的实例 访问类的静态变量 调用类的静态方法 使用反射方法 初始化类的子类对象 直接使用java.exe 调用某个类
- JNI/NDK开发指南(六)——C/C++访问Java实例方法和静态方法
- JNI/NDK开发指南(六)——C/C++访问Java实例方法和静态方法
- Java如何在静态方法中访问类的实例成员(没附加static关键字的字段或方法)
- C/C++ 访问 Java 实例方法和静态方法
- Java中静态方法不具有多态性
- android JNI中C/C++ 访问 Java 实例方法和静态方法
- Java静态方法不具有多态性详解
- Java中静态方法不具有多态性
- C/C++ 访问 Java 实例方法和静态方法
- 2.24 Java基础总结 ①访问权限②static③静态方法④实例初始化块⑤静态初始化块
- Java静态初始化,实例初始化以及构造方法复习~
- 【Java基础】——变量向上转型后的实例变量与方法的访问