java笔试题,根据代码写结果

问题描述

java笔试题,根据代码写结果

public class Base
{
int i;
Base()
{
add(1);
}
void add(int v)
{
i+=v;
}

void print()
{
    System.out.println(i);
}

}
public class Extention extends Base
{
Extention()
{
add(2);
}
void add(int v)
{
i+=v*2;
}
}

public class Qd01
{
public static void main(String[] args)
{
bogo(new Extention());
}

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

}

解决方案

根据结果写代码,那结果是什么呢?

解决方案二:

sorry,看错了。程序结果是22

http://ideone.com/FLi3ya
在线验证。

解决方案三:

这道题得22,得21的,错在Base里初始化的时候,走了父类的add,其实应该是子类add,因为子类已经重写父类的add方法,所以应该按照子类方法计算,
所以是22

解决方案四:

20,子类中i重新复值为0了

解决方案五:

22,本來我也是21,因為忘記了原來在運行時就可以執行動態綁定方法的調用,因為他是會由外深入到繼承層次結構內部,所以在這裡首先執行的BASE的域i初始化為0,在執行構造器,后因動態綁定調用Extention中的add(int i)方法 i=2;后執行Extention構造器 i = 6,在執行add(8) 后 i= 22;
注意點:動態綁定是在程序運行時進行調用,所以在構造基類時,即使導出類沒有初始化,也會調用導出類的方法.這個例題記得在Thinking in Java多態中有詳細解法..請查看,那上面有非常詳細的解釋

解决方案六:

这是考试现场求答案吗?
放到Eclipse里跑一下结果不就出来了;

解决方案七:

要实例化extention对象,先运行它父类的无参构造函数 变量i为设定初值所以默认为0,父类构造函数运行add函数i变1再运行extention类构造函数,构造函数调用add函数,i变5再运行bogo函数体i变21

时间: 2024-09-01 09:12:19

java笔试题,根据代码写结果的相关文章

代码分析-一道Java笔试题,求解答(关于类的加载与初始化)

问题描述 一道Java笔试题,求解答(关于类的加载与初始化) 自己查了一些资料,还是看不懂这个程序的输出结果,求各位详细解释初始化和执行过程,谢! public class Alibaba { public static int k = 0; public static Alibaba t1 = new Alibaba("t1"); public static Alibaba t2 = new Alibaba("t2"); public static int i =

java 笔试题-微软4月笔试题第二题,为什么本地运行没错,提交是RE,实在想不出来,求救!!

问题描述 微软4月笔试题第二题,为什么本地运行没错,提交是RE,实在想不出来,求救!! import java.util.ArrayList; import java.util.Scanner; public class Main { int allowS = 0;//rules allow数组大小 int denyS = 0; ArrayList<String> allow = new ArrayList<>();//用来存放动态变化的rules,整个类都要使用,则定义为实例变量

java 笔试题-网易类的初始化的笔试题

问题描述 网易类的初始化的笔试题 public class Father { public static String desc = "Father"; static { System.out.println(desc); } Father(){ System.out.println("Father Constructor"); } String str = fun(); public String fun(){ System.out.println("F

java面试题—精选30道Java笔试题解答(一)

 下面都是我自己的答案非官方,仅供参考,如果有疑问或错误请一定要提出来,大家一起进步啦~~~   1. 下面哪些是Thread类的方法() A start()       B run()       C exit()       D getPriority() 答案:ABD 解析:看Java API docs吧:http://docs.oracle.com/javase/7/docs/api/,exit()是System类的方法,如System.exit(0).   2. 下面关于java.la

java面试题—精选30道Java笔试题解答(二)

19. 下面程序能正常运行吗() public class NULL { public static void haha(){ System.out.println("haha"); } public static void main(String[] args) { ((NULL)null).haha(); } } 答案:能正常运行 解析:输出为haha,因为null值可以强制转换为任何java类类型,(String)null也是合法的.但null强制转换后是无效对象,其返回值还是为

java笔试题

v下面有关JVM内存,说法错误的是? A.程序计数器是一个比较小的内存区域,用于指示当前线程所执行的字节码执行到了第几行,是线程隔离的 B.Java方法执行内存模型,用于存储局部变量,操作数栈,动态链接,方法出口等信息,是线程隔离的 C.方法区用于存储JVM加载的类信息.常量.静态变量.即使编译器编译后的代码等数据,是线程隔离的 D.原则上讲,所有的对象都在堆区上分配内存,是线程之间共享的 解析:方法区在JVM中也是一个非常重要的区域,它与堆一样,是被 线程共享 的区域. 在方法区中,存储了每个

拉钩网java笔试题分享_java

你是一名体育老师,在某次课距离下课还有五分钟时,你决定搞一个游戏.此时有100名学生在上课.游戏的规则是:1. 你首先说出三个不同的特殊数,要求必须是个位数,比如3.5.7.2. 让所有学生拍成一队,然后按顺序报数.3. 学生报数时,如果所报数字是第一个特殊数(3)的倍数,那么不能说该数字,而要说Fizz:如果所报数字是第二个特殊数(5)的倍数,那么要说Buzz:如果所报数字是第三个特殊数(7)的倍数,那么要说Whizz.4. 学生报数时,如果所报数字同时是两个特殊数的倍数情况下,也要特殊处理,

经典算法(9) 从归并排序到数列的逆序数对(微软笔试题)

首先来看看原题 微软2010年笔试题 在一个排列中,如果一对数的前后位置与大小顺序相反 ,即前面的数大于后面的数,那么它们就称为一个逆序数对.一个排列中逆序的总数就称为这个排列的逆序 数.如{2,4,3,1}中,2和1,4和3,4和1,3和1是逆序数对,因此整个数组的逆序数对个数为4,现在给定 一数组,要求统计出该数组的逆序数对个数. 计算数列的逆序数对个数最简单的方便就最从前向后依 次统计每个数字与它后面的数字是否能组成逆序数对.代码如下: #include <stdio.h> int ma

Java面试笔试题大汇总(最全+详细答案)

声明:有人说, 有些面试题很变态,个人认为其实是因为我们基础不扎实或者没有深入.本篇文章来自一位很资深的前辈对于最近java面试题目所做的总结归纳,有170道题目 ,知识面很广 ,而且这位前辈对于每个题都自己测试给出了答案 ,如果你对某个题有疑问或者不明白,可以电脑端登录把题目复制下来然后发表评论,大家一起探讨,也可以电脑端登录后关注我给我发私信,我们一起进步! 以下内容来自这位前辈 2013年年底的时候,我看到了网上流传的一个叫做<Java面试题大全>的东西,认真的阅读了以后发现里面的很多题