Java程序初始化过程中方法覆盖问题

原创 2007年10月04日 20:02:00
 代码如下:
/*
 * Test.java
 *
 * Created on 2007-10-4, 19:32:43
 *
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 
*/


/**
 *
 * 
@author Jeffery
 
*/


class Base {

    
int i;

    Base() 
{
        add(
1);
        System.out.println(
"Base" + this.i);
    }


    
void add(int i) {
        
this.i += i;
        System.out.println(
"Base add i" + this.i);
    }

}


class MyBase extends Base {

    MyBase() 
{
        add(
2);
        System.out.println(
"Mybase" + this.i);
    }


    
void add(int i) {
        
this.i += i * 2;
        System.out.println(
"Mybase add i" + this.i);
    }

}


public class Test {

    
public static void main(String[] args) {
        go(
new MyBase());
    }


    
static void go(Base b) {
        b.add(
8);
    }

}
最后输出i的值为22

分析:按照之前一篇文章总结在主函数中,首先执行new MyBase(),在这个过程中,子类会首先调用父类的构造函数Base(),但Base()函数执行add()方法时特别需要注意, 这个add方法由于是在新建MyBase对象时调用的,所以将会首先查找MyBase类中是否有此方法。所以Base函数中的add(1)实际上是执行的乘2的方法。
版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

java程序执行过程中动态加载jar包

最近做一个远程接口测试系统,遇到了动态加载jar包的问题,如将用户上传的jar包动态加载后调用远程接口的方法,特将例子记录下来以便查找。
  • baokx
  • baokx
  • 2015-09-16 18:27
  • 1173

java程序开发过程中会话管理的技巧

有效安全用户的会话状态对Web应用程序来说至关重要。如淘宝的网上交易系统。因为在同一时间可能有数以千计的用户在使用这个系统。为此服务器必须要知道当用户在浏览不同网页查询并选购商品时,哪些商品是属于哪个...

关于Java程序中类定义对象的处理,以及类中变量与方法的运行过程

首先先理解创建一个对象时,系统所要完成的3个工作: 1>为每个对象分配不同的存储空间,即不同的实例化对象要有不同的地址空间;(也可以理解为有多个对象同时指示着同一个实例) 2>如果类定义有初值,使...

java开发过程中对于乱码问题的解决方法

最近在做项目的时候由于要用到一个日志的功能,然后将操作日志写到文件中,最后定时从日志中读取文件写到数据库中,由于在定时任务中用到了RandomAccessFile记录日志的增量部分,所以产生了在用Ra...

对Java程序中的中文乱码问题的解决方法

对Java程序中的中文乱码问题的解决方法 1、中文问题的来源 计算机最初的操作系统支持的编码是单字节的字符编码,于是,在计算机中一切处理程序最初都是以单字节编码的英文为准进行处理。...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)