java的前期绑定和后期绑定使用示例_java

后期绑定,是指在运行时根据对象的类型进行绑定,又叫动态绑定或运行时绑定。实现后期绑定,需要某种机制支持,以便在运行时能判断对象的类型,调用开销比前期绑定大。
Java中的static方法和final方法属于前期绑定,子类无法重写final方法,成员变量(包括静态及非静态)也属于前期绑定。除了static方法和final方法(private属于final方法)之外的其他方法属于后期绑定,运行时能判断对象的类型进行绑定。验证程序如下:

复制代码 代码如下:

class Base
{
    //成员变量,子类也有同样的成员变量名
    public String test="Base Field";
    //静态方法,子类也有同样签名的静态方法
    public static void staticMethod()
    {
        System.out.println("Base staticMethod()");
    }
    //子类将对此方法进行覆盖
    public void notStaticMethod()
    {
        System.out.println("Base notStaticMethod()");
    }

}
public class Derive extends Base
{
    public String test="Derive Field";
    public static void staticMethod()
    {
        System.out.println("Derive staticMethod()");
    }
    @Override
    public void notStaticMethod()
    {
        System.out.println("Derive notStaticMethod()");
    }
    //输出成员变量的值,验证其为前期绑定。
    public static void testFieldBind(Base base)
    {
        System.out.println(base.test);
    }
    //静态方法,验证其为前期绑定。
    public static void testStaticMethodBind(Base base)
    {
        //The static method test() from the type Base should be accessed in a static way
        //使用Base.test()更加合理,这里为了更为直观的展示前期绑定才使用这种表示。
        base.staticMethod();
    }
    //调用非静态方法,验证其为后期绑定。
    public static void testNotStaticMethodBind(Base base)
    {
        base.notStaticMethod();
    }
    public static void main(String[] args)
    {
        Derive d=new Derive();
        testFieldBind(d);
        testStaticMethodBind(d);
        testNotStaticMethodBind(d);
    }
}
/*程序输出:
Base Field
Base staticMethod()
Derive notStaticMethod()
 */

时间: 2024-09-10 17:52:35

java的前期绑定和后期绑定使用示例_java的相关文章

Java中BufferedReader与BufferedWriter类的使用示例_java

BufferedReaderBufferedReader 是缓冲字符输入流.它继承于Reader. BufferedReader 的作用是为其他字符输入流添加一些缓冲功能. 创建BufferReader时,我们会通过它的构造函数指定某个Reader为参数.BufferReader会将该Reader中的数据分批读取,每次读取一部分到缓冲中:操作完缓冲中的这部分数据之后,再从Reader中读取下一部分的数据. 为什么需要缓冲呢?原因很简单,效率问题!缓冲中的数据实际上是保存在内存中,而原始数据可能是

java利用mybatis拦截器统计sql执行时间示例_java

可以根据执行时间打印sql语句,打印的sql语句是带参数的,可以拷贝到查询分析器什么的直接运行 复制代码 代码如下: package mybatis; import java.text.DateFormat;import java.util.Date;import java.util.List;import java.util.Locale;import java.util.Properties; import org.apache.ibatis.executor.Executor;import

java将图片分割为几个部分示例_java

以下代码使用java将图片分割为几个部分,大家参考使用吧 复制代码 代码如下: public class SegmentationImage{    public static Icon Segmentation(String imagename,int Width,int Height,int height,int width) throws Exception{  // 准备分割图片      BufferedImage img1=ImageIO.read(new File(imagenam

java连接hdfs ha和调用mapreduce jar示例_java

Java API 连接 HDFS HA 复制代码 代码如下: public static void main(String[] args) {  Configuration conf = new Configuration();  conf.set("fs.defaultFS", "hdfs://hadoop2cluster");  conf.set("dfs.nameservices", "hadoop2cluster");

Java实现直接插入排序和折半插入排序算法示例_java

直接插入排序​1 排序思想: 将待排序的记录Ri插入到已经排好序的记录R1,R2,--,R(N-1)中. 对于一个随机序列而言,就是从第二个元素开始,依次将这个元素插入到它之前的元素中的相应位置.它之前的元素已经排好序. 第1次排序:将第2个元素插入到前边的有序列表(此时前边只有一个元素,当然是有序的),之后,这个序列的前2个元素就是有序的了. 第2次排序:将第3个元素插入到前边长度为2的有序列表,使得前2个元素是有序的. 以此类推,直到将第N个元素插入到前面长度为(N-1)的有序列表中. 2

用Java实现全国天气预报的api接口调用示例_java

step1:选择本文所示例的接口"全国天气预报接口" 聚合数据url:http://www.juhe.cn/docs/api/id/39/aid/87 step2:每个接口都需要传入一个参数key,相当于用户的令牌,所以第一步你需要申请一个key. step3:学过java的同学们都知道,当我们对一个类或者方法不明白其意图和思想时,我们可以去查看文档,这里也不例外,而且对于英文不是特别好的同学来说很幸运的是,聚合网站上的文档都是中文版本的,比起阅读java源码里的英文文档应该轻松很多.

Java使用二分法进行查找和排序的示例_java

实现二分法查找二分法查找,需要数组内是一个有序的序列 二分查找比线性查找:数组的元素数越多,效率提高的越明显 二分查找的效率表示:O(log2N) N在2的M次幂范围,那查找的次数最大就是M,  log2N表示2的M次幂等于N, 省略常数,简写成O(logN) 如有一个200个元素的有序数组,那么二分查找的最大次数: 2^7=128, 2^8=256, 可以看出7次幂达不到200,8次幂包括, 所以最大查找次数就等于8 //循环,二分查找 static int binarySearch(int[

java字符串比较获取字符串出现次数的示例_java

比如:javascriptjavasejavaeejavame 思路:定义一个计数器获取java第一次出现的位置从第一次出现位置后剩余的字符串中继续获取java出现的位置每获取一次就计数一次当获取不到时,计数完成 复制代码 代码如下: class StringCount{    public static void main(String[] args){        String s = "javascriptjavasejavaeejavame";        int coun

java数字图像处理基础使用imageio写图像文件示例_java

一个BufferedImage的像素数据储存在Raster中,ColorModel里面储存颜色空间,类型等信息,当前Java只支持一下三种图像格式- JPG,PNG,GIF,如何向让Java支持其它格式,首先要 完成Java中的图像读写接口,然后打成jar,加上启动参数- Xbootclasspath/pnewimageformatIO.jar即可. Java中如何读写一个图像文件,使用ImageIO对象即可.读图像文件的代码如下:   复制代码 代码如下: File file = new Fi