`
wangleide414
  • 浏览: 592040 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

new() 的具体执行过程

阅读更多

前几天在网上看java笔试题,看到下面这个题目,然后在自己的环境下执行了一下,觉得很有收获,

class testA {
 private int id=9;
 public testA(){
 a1();
 }
 public void a1() {
 System.out.println("this is A");
 }
}

 

 

 

public class testB extends testA{
 private int id=8;
 int bb=0;
 public testB() {
 bb=1000;
 super.a1();

 a1();
 }
 public void a1() {
 System.out.println("bb is "+bb);
 System.out.println("B-a1");
 }
 public static void main(String[] args) {
  new testB();
 }  
}

 

大家先猜猜这个执行的结果。

 

 

结果是:

bb is 0
B-a1
this is A
bb is 1000
B-a1

 

以上结果表明:在new()的具体过程是这样的,当new testB(); 的时候首先执行父类的构造方法,父类的构造方法调用了a1();此时编译器又检查到testB重写了a1()这个方法;所以执行的是子类的a1()方法。由于此时还没有执行testB()的构造方法,所以bb=0;所以才有上面的结果。

0
1
分享到:
评论

相关推荐

    详解JavaScript中new操作符的解析和实现

    new 运算符是我们在用构造函数创建实例的时候使用的,本文来说一下 new 运算符的执行过程和如何自己实现一个类似 new 运算符的函数。 new 运算符的运行过程 new 运算符的主要目的就是为我们创建一个用户定义的对象...

    JavaScript new对象的四个过程实例浅析

    本文实例讲述了JavaScript new对象的四个过程。分享给大家供大家参考,具体如下: new对象: function Person(name, age) { this.name = name; this.age = age; } var person = new Person("Alice", 23); new一...

    C#调用存储过程详解(带返回值、参数输入输出等)

    本文实例讲述了C#调用存储过程的方法。分享给大家供大家参考,具体如下: CREATE PROCEDURE [dbo].[GetNameById] @studentid varchar(8), @studentname nvarchar(50) OUTPUT AS BEGIN SELECT @studentname=...

    C#计算程序执行过程花费时间的方法

    本文实例讲述了C#计算程序执行过程花费时间的方法。分享给大家供大家参考。具体如下: 计算执行完程序花费的时间: void AddInfo() { System.Diagnostics.Stopwatch sw = new System.Diagnostics.Stopwatch(); sw...

    C#执行存储过程并将结果填充到GridView的方法

    本文实例讲述了C#执行存储过程并将结果填充到GridView的方法。分享给大家供大家参考,具体如下: SelectSql sq = new SelectSql(); SqlConnection conn = new SqlConnection(sq.lc); conn.Open(); SqlDataAdapter ...

    MySQL存储过程中实现执行动态SQL语句的方法

    本文实例讲述了MySQL存储过程中实现执行动态SQL语句的方法。分享给大家供大家参考。具体实现方法如下: mysql> mysql> delimiter $$ mysql> mysql> CREATE PROCEDURE set_col_value -> (in_table VARCHAR(128), -...

    asp.net小实例解析

    /// <returns>DataReader:购物车具体信息 public SqlDataReader GetItems(string cartID) { // 新建Connection和Command实例 SqlConnection myConnection = new SqlConnection(ConfigurationSettings...

    C#中调用MySQL存储过程的方法

    具体如下: 这段代码演示在 C# 程序中调用 MySQL 的存储过程,没有返回值,没有参数传递。 MySqlConnection myConnection; myConnection = new MySqlConnection(); myConnection.ConnectionString = database=+...

    VB.NET调用MySQL存储过程并获得返回值的方法

    本文实例讲述了VB.NET调用MySQL存储过程并获得返回值的方法。分享给大家供大家参考。具体实现方法如下: Dim myConnectionString As String = Database= & myDatabase & _ ;Data Source= & myHost & _ ;User Id= ...

    bat批处理文件实现复制、删除、创建文件夹、执行程序、打开文件

    这里filemon文件夹和该bat文件在同一目录下,就省去具体路径了。但rd只能删除空文件夹. 要删除文件夹及其里面的所有子目录和文件,用rd命令带/s /q参数, /s参数表示删除该文件夹及其下面的子目录和文件 /q参数表示...

    积分管理系统java源码-new-and-old:实习过程中的温故知新

    new-and-old 温故: 资源的释放问题: java中需要手动释放的资源目前接触的主要有 1)io流资源 2)jdbc资源 关闭原则主要是先开后关,从里到外。 具体实现方法为放在try-catch-finally语句块中。 其中对于流的关闭...

    asp.net实现调用存储过程并带返回值的方法

    本文实例讲述了asp.net实现调用存储过程并带返回值的方法。分享给大家供大家参考,具体如下: /// /// DataBase 的摘要说明 /// public class DataBase { /// ///DataBase 的摘要说明 /// protected static...

    轻构编辑SDI镜像文件,不用转包

    使用方法: 1、下载之后解压至任意目录,执行install....(sdimgr.wsf的应用具体可看 http://bbs.wuyou.net/cgi-bin/topic.cgi?forum=34&topic=11857&show=0 ,其中有详细使用过程) [UploadFile=sdi_1127299738.rar]

    Qt Creator 的安装和hello world 程序+其他程序的编写--不是一般的好

    下载完成后,直接安装即可,安装过程中按默认设置即可。 2.运行Qt Creator,首先弹出的是欢迎界面,这里可以打开其自带的各种演示 程序。 3.我们用File->New 菜单来新建工程。 4.这里我们选择Qt4 Gui Application。 ...

    多功能.NET代码自动生成器(含存储过程)

    3) 添加public方法,调用存储过程,具体参考其他自动生成的代码; 4) 在IDAL文件夹下新建分布类文件,添加相应using信息,接口声明如下: public partial interface IDALCalendarNotes 5) 添加新增方法的接口声明; ...

    抽象工厂模式(Abstract Factory Pattern)

    客户在这一过程中并不知道具体工厂都做了什么。也就是说,客户只依赖于抽象工厂和抽象产品了。在初始化的时候会用到一次具体工厂类名,我们根据.NET特有的反射机制又可以把这个在客户端唯一的具体的非抽象类放到一个...

    图解Java对象初始化过程以及方法调用

    1:虚拟机加载OOPDemo类(省略详细加载过程(装载、链接、初始化)),提取类型信息(具体保存哪些类型信息查看博文:Java虚拟机体系结构),存储到方法区中,对应图中的绿色矩形区域。  2:通过保存在方法区的字节...

    数据库开发框架(PDF版)

    在主窗口的功能列上,在功能项上按右键,应该有一个加入收藏夹的功能*记忆:在FIELD的DEFAULTEXPRESS中填DATE表示默认当前日期*NEW:把KU中SELECT相关的过程中,设置表格宽度的参数部分,如果为负数,则不改变默认宽度*NEW:...

    vs实现js格式化和代码折叠

    打开 菜单 --> Tools --> Macro --> New Macro Project...,根据向导提示建立工程。 2. 编辑Macro工程 打开 菜单 --> Tools --> Macro --> Macro Explorer ,在Explorer中选择新建的工程,修改Module名(右键),在...

    《面向对象编程与设计(Java)》课后作业及参考解答.pdf

    (2)动态多态性是指在编译程序代码时,编译器不会将某一方法体的调用和方法体结 合起来,而是在程序执行过程中根据对象的实际类型选择相应的方法体,再最终生成对 应的程序代码。 实现的具体手段是应用方法重写。 ...

Global site tag (gtag.js) - Google Analytics