java的前期绑定和后期绑定使用示例
JAVA 使用 示例 绑定 后期 前期
2023-06-13 09:15:17 时间
后期绑定,是指在运行时根据对象的类型进行绑定,又叫动态绑定或运行时绑定。实现后期绑定,需要某种机制支持,以便在运行时能判断对象的类型,调用开销比前期绑定大。
Java中的static方法和final方法属于前期绑定,子类无法重写final方法,成员变量(包括静态及非静态)也属于前期绑定。除了static方法和final方法(private属于final方法)之外的其他方法属于后期绑定,运行时能判断对象的类型进行绑定。验证程序如下:
classBase
{
//成员变量,子类也有同样的成员变量名
publicStringtest="BaseField";
//静态方法,子类也有同样签名的静态方法
publicstaticvoidstaticMethod()
{
System.out.println("BasestaticMethod()");
}
//子类将对此方法进行覆盖
publicvoidnotStaticMethod()
{
System.out.println("BasenotStaticMethod()");
}
}
publicclassDeriveextendsBase
{
publicStringtest="DeriveField";
publicstaticvoidstaticMethod()
{
System.out.println("DerivestaticMethod()");
}
@Override
publicvoidnotStaticMethod()
{
System.out.println("DerivenotStaticMethod()");
}
//输出成员变量的值,验证其为前期绑定。
publicstaticvoidtestFieldBind(Basebase)
{
System.out.println(base.test);
}
//静态方法,验证其为前期绑定。
publicstaticvoidtestStaticMethodBind(Basebase)
{
//Thestaticmethodtest()fromthetypeBaseshouldbeaccessedinastaticway
//使用Base.test()更加合理,这里为了更为直观的展示前期绑定才使用这种表示。
base.staticMethod();
}
//调用非静态方法,验证其为后期绑定。
publicstaticvoidtestNotStaticMethodBind(Basebase)
{
base.notStaticMethod();
}
publicstaticvoidmain(String[]args)
{
Derived=newDerive();
testFieldBind(d);
testStaticMethodBind(d);
testNotStaticMethodBind(d);
}
}
/*程序输出:
BaseField
BasestaticMethod()
DerivenotStaticMethod()
*/
相关文章
- fileinputstream java,使用url的Java fileinputstream
- java %08d_总结Java中String.format()的使用[通俗易懂]
- java怎么用_如何使用Java编写程序
- MySQL字段类型如何转为java_Java JDBC中,MySQL字段类型到JAVA类型的转换
- JAVA的使用_Java集成开发环境
- 使用zip4j进行Java压缩和解压文件
- java使用poi读取excel文件代码示例详解编程语言
- java操作MySQL的简单jdbc使用demo详解编程语言
- 如何使用Java连接MySQL数据库(java怎么连接mysql数据库)
- 开发开创Linux更美好的Java开发环境(linux集成java)
- 使用Java在Redis中实现过期操作(redisjava过期)
- 实现使用Redis与Java实现过期数据清理(redisjava过期)
- 策略Java中使用Redis实现数据过期策略(redisjava过期)
- 使用Java远程控制Linux 实现简单、高效的服务器管理(java控制linux)
- Using Java to Work with MongoDB: A Guide for Developers(java操作mongodb)
- Oracle和Java结合,推出新一代商城系统(java oracle商城)
- Java布局管理器使用方法
- 分享关于JAVA中使用Preferences读写注册表时要注意的地方
- java中final关键字使用示例详解
- java数字图像处理基础使用imageio写图像文件示例
- java对象序列化与反序列化的默认格式和json格式使用示例
- java使用gzip实现文件解压缩示例
- java反射技术与类使用示例
- 使用httpclient无需证书调用https的示例(java调用https)
- Java并发编程示例(九):本地线程变量的使用