展会信息港展会大全

由Eclipse源码跳转功能想到的一个Java基础知识
来源:互联网   发布日期:2016-01-14 14:26:02   浏览:1011次  

导读:最近在使用Eclipse阅读一些优秀的开源项目源码,其间发现一个初学者很容易进入的陷阱。现叙述如下: 假设有两个类,子类Sub继承自父类Base,代码如下://Base类...

最近在使用Eclipse阅读一些优秀的开源项目源码,其间发现一个初学者很容易进入的陷阱。现叙述如下:

假设有两个类,子类Sub继承自父类Base,代码如下:

//Base类

public class Base {

public void say(){

sayHello();

}

public void sayHello(){

System.out.println("Base say Hello!");

}

}

//Sub类

public class Sub extends Base {

@Override

public void sayHello() {

System.out.println("Sub say Hello!");

}

public void test(){

super.say();

}

}

//测试类TestCase

public class TestCase {

public static void main(String[] args) {

Sub sub=new Sub();

sub.test(); //结果是"Sub say Hello!"还是"Base say Hello!"?

}

}

如果你已经看出结果是"Sub say Hello!",那么恭喜你,你的Java基本功很扎实。在Sub类的test()方法中调用super.say(),可以简单的理解成普通的函数调用 ,将super.say()调用替换成实现代码后,Sub的实现代码如下:

public class Sub extends Base {

@Override

public void sayHello() {

System.out.println("Sub say Hello!");

}

public void test(){

sayHello(); //super.say()调用的实现代码

}

}

到这,结果应该显而易见了,此处sayHello()指向Sub.sayHello()方法,所以输出结果为"Sub say Hello!"。

背景知识讲完了,下面看一下Eclipse中的代码跟踪功能:

按住Ctrl键,鼠标单击super.say(),Eclipse中跳转结果如下:

按住Ctrl键,单击第3行代码sayHello(),跳转结果如下:

看到这样的跳转结果会让很多初学者摸不着头脑。希望在今后的Eclipse版本中能够尽快的修正这个功能,毕竟这对Eclipse开发团队来说很容易做到。

本文出自 “春华秋实” 博客

赞助本站

人工智能实验室

相关热词: java 教程

AiLab云推荐
推荐内容
展开

热门栏目HotCates

Copyright © 2010-2024 AiLab Team. 人工智能实验室 版权所有    关于我们 | 联系我们 | 广告服务 | 公司动态 | 免责声明 | 隐私条款 | 工作机会 | 展会港