该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

题目:下面程序的输出结果是多少?

代码清单1:

import java.util.Date;

public class MyDate extends Date{

public static void main(String[] args) {

new MyDate().test();

}

public void test() {

System.out.println(super.getClass().getName());

}

}

复制代码结果是:MyDate

分析:在test方法中,直接调用getClass().getName()方法,返回的是MyDate类名。由于getClass()在Object类中定义成了final,子类不能覆盖该方法,所以,在test方法中调用getClass().getName()方法,其实就是在调用从父类继承的getClass()方法,等效于调用super.getClass().getName()方法,所以,super.getClass().getName()方法返回的也应该是MyDate。

如果想得到父类的名称,应该用如下代码:getClass().getSuperClass().getName();public final Class> getClass()方法,API手册解释是:返回此Object的运行时类。返回的Class对象是由所表示类的 static synchronized 方法锁定的对象。实际结果类型是 Class extends |X|>,其中 |X| 表示清除表达式中的静态类型,该表达式调用 getClass。

this.getClass()是返回运行时对象的类型,但是super.getClass()为何返回的还是子类的类型,还是不明白?

请看实例:代码清单2:

class B extends A {

public void print() {

/*

* 调用A类中的getclass()方法,A是Object的子类,A中的getClass()是Object中的,运行时期

* 的实例是B类,所以输出的依然是Class B

*/

System.out.println(super.getClass());

/*

* 调用B类中的getclass()方法,此方法从A继承的,A从Object继承的,运行时期的实例是B * 类,所以输出的是Class B

*/

System.out.println(this.getClass());

}

}

class A {

}

复制代码上面的super.getClass()和this.getClass()都是调用的Object中的getClass(),而super.getClass()和this.getClass()都是通过实例化B类,调用print(),从而调用这两个方法,运行时期的类都是B,Object中的getClass()返回的是运行时期的类名,所以输出都是Class B

java智力题及答案_Java脑筋急转弯相关推荐

  1. java判断题及答案_Java面试题及解析(判断题)

    1.代码差错,判断代码对错,并指出错误处 abstract class Name{ private String name; public abstract Boolean isStupidName( ...

  2. 收藏微软面试智力题 (附答案)

    A.逻辑推理 1.你让工人为你工作7天,给工人的回报是一根金条.金条平分成相连的7段 ,你必须在每天结束时给他们一段金条,如果只许你两次把金条弄断,你如何给你 的工人付费?   2.请把一盒蛋糕切成8 ...

  3. 微软面试智力题(附答案)

    转自: http://www.blogjava.net/wenhan-uk/archive/2007/08/17/137703.html 收藏微软面试智力题 (附答案) A.逻辑推理 1.你让工人为你 ...

  4. 智力题及答案(逻辑推理)

    http://liuguimei72.blog.163.com/blog/static/26955309200992984314299/ 1 .你让工人为你工作7 天,给工人的回报是一根金条.金条平分 ...

  5. 笔试常见的智力题 附答案

    笔试常见的智力题(附答案) A.逻辑推理        1.你让工人为你工作7天,给工人的回报是一根金条.金条平分成相连的7段  ,你必须在每天结束时给他们一段金条,如果只许你两次把金条弄断,你如何给 ...

  6. 面试智力题 (附答案)

    A.逻辑推理    1.你让工人为你工作7天,给工人的回报是一根金条.金条平分成相连的7段 ,你必须在每天结束时给他们一段金条,如果只许你两次把金条弄断,你如何给你的工人付费?  2.请把一盒蛋糕切成 ...

  7. java初学编程题及答案_Java 入门编程题答案记录(记录)

    输入格式: 首先,你会读到若干个城市的名字.每个名字都只是一个英文单词,中间不含空格或其他符号.当读到名字为"###"(三个#号)时,表示城市名字输入结束,###并不是一个城市的名 ...

  8. java大学教程习题答案_Java程序设计大学教程:习题解答与课程设计

    前言 计算机程序设计课程既是一门理论课又是一门实践课,除了要在课堂学习程序设计的原理和方法,掌握程序设计语言的语法知识和编程技能外,还要进行大量的课外练习和实际操作,以达到熟悉掌握所学知识,培养应用能 ...

  9. java面试题26-107(答案)_Java面试题汇总,160道带你征战大厂

    前言 答案文末自取 关于赢在面试的Java题系列基本收集整理完成了,所有题目都是经过精心挑选的,很基础又考验求职者的基本功,应该说被面试到的几率很大.这里整理挑选出来供大家面试前拿来看一看,所有题目整 ...

最新文章

  1. LNK2001连接错误
  2. android 虚拟按键 增减和删除的方法
  3. step1 . day8 C语言基础练习之指针和函数
  4. 800万,这位两院院士全捐了!
  5. 人到中年生活不易,特别是工作压力很大
  6. stringstream常见用法介绍
  7. kettle中止是怎么用的_【Kettle】第一篇,Pan 的使用
  8. 路径规划-人工势场法(Artifical Potential Field)
  9. h5php大转盘抽奖,html5转盘抽奖 完整代码下载(网页版)
  10. A1339. JZPLCM(顾昱洲)|树状数组|hash表|逆元|分解质因数
  11. Nagios基本介绍
  12. 利用SSA方法插值GRACE数据的空缺数据
  13. lol封号维护服务器,LOL玩家被封三年执着理论,腾讯客服是这样回复的
  14. codeforces:E. Add Modulo 10【状态压缩 + 找规律】
  15. 一个基于server酱推送服务的laravel package
  16. 频域串联滞后校正matlab,控制工程基础(基于Matlab的线性系统串联校正)
  17. 云麦体脂秤华为体脂秤_华为智能体脂秤(蓝牙版),会是良心之选吗?
  18. 学习笔记:物料接收到质检库存的几种不同方式
  19. 如何看待越来越多人报名参加软考?
  20. 华为ensp,wireshark3.0.0,virtualbox 5.2.22 安装包

热门文章

  1. 女程序猿的苦恼:“26岁后,分手对我来说不是件容易的事情”
  2. CSS常用伪元素详解
  3. iOS NSTimeInterval 转成 NSDate
  4. 【Unique函数】Unique函数用法
  5. android面试(16)-数据库存储框架greendao
  6. 调节e18-d80nk的测量距离_数显调节仪XSC5-ASIC1V1蓝宇
  7. Fancybox的API和配置选项说明
  8. 计算机c盘装的是什么,软件装在c盘和其他盘有什么区别
  9. 盐城北大青鸟IT精英挑战赛获奖作品展--《魔女薇洛》
  10. Goland配置Go环境