Java面试题之super.getClass方法调用

今天从网上看了一道Java的面试题,结果不小心就掉在陷阱里了,我觉的这个面试题挺好的,所以分享给大家!

先看一下程序的代码,看看最后的输出结果是多少?

import java.util.Date;

public  class Test extends Date

{

public void test()

{

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

}

public static void main(String[] args)

{

new Test().test();

}

}

如果不了解,很可能得出错误的答案,其实答案是Test,是不是很奇怪,结果竟然是Test。

这道题就属于脑筋急转弯的题目,很简单的,也很容易落入陷阱中。我想大部分人之所以落入陷阱中可能是因为这个类继承了。

如果在test方法中,直接调用getClass().getName()方法的化,相当于调用this.getClass().getName(),这样返回的就是Test类名

由于getClass()在Object类中定义成了final,子类不能覆盖该方法,所以,Date类也是没有这个方法的,在test方法中调用getClass().getName()方法,其实就是在调用从父类继承的getClass()方法,等效于调用super.getClass().getName()方法,所以,super.getClass().getName()方法返回的也应该是Test。

如果想得到父类的名称,应该用如下代码:

getClass().getSuperClass().getName();

如果这道题没有继承任何类,我相信就不会掉进陷阱里了。

明白了吗?

推荐阅读:

java getclass方法_Java面试题之super.getClass方法调用相关推荐

  1. futuretask java 并发请求_Java面试题整理一(侧重多线程并发)

    1..是否可以在static环境中访问非static变量? 答:static变量在Java中是属于类的,它在所有的实例中的值是一样的.当类被Java虚拟机载入的时候,会对static变量进行初始化.如 ...

  2. (JAVA学习笔记) 类的继承,super,方法的重写,多态

    文章目录 类的继承,super,方法的重写,多态 1.类的继承 代码演示: 2.super和this 代码演示: 3.方法的重写 代码演示: 4.多态 代码演示: 类的继承,super,方法的重写,多 ...

  3. java comparable接口_Java面试题之Java集合篇三

    Java面试题之Java集合篇三1.HashMap和HashTable有何不同? (1)HashMap允许key和value为null,而HashTable不允许. (2)HashTable是同步的, ...

  4. java extends原则_Java泛型extends及super区别实例解析

    extends T>和 super T>是Java泛型中的"通配符(Wildcards)"和"边界(Bounds)"的概念. extends T&g ...

  5. java 107问_JAVA面试题26-107(答案)

    Server.java:源代码 import java.net.*; import java.io.*; class Server { public Server() { BufferedReader ...

  6. java 方法继承方法_java的继承原理与实现方法详解

    本文实例讲述了java的继承原理与实现方法.分享给大家供大家参考,具体如下: 继承 1.java中是单继承的.每个子类只有一个父类. 语法:子类 extends 父类 2.在java中,即使没有声明父 ...

  7. java哪些类重写equals方法_Java自定义类中重写equals方法

    equals方法的要求: a.自反性:对于任何非空的x,x.equals(x)都应该返回true b.对称性:对于任何引用x和y,当且仅当x.equals(y)返回true时,y.equals(x)也 ...

  8. java 遍历方法_Java ArrayList遍历的3种方法

    首页 > 基础教程 > 集合框架 > ArrayList类 Java ArrayList遍历的3种方法 1. Iterator方法遍历 for(Iterator it2 = list ...

  9. java 随机数生成实现_Java中生成随机数的实现方法总结

    搜索热词 在实际开发工作中经常需要用到随机数.如有些系统中创建用户后会给用户一个随机的初始化密码.这个密码由于是随机的,为此往往只有用户自己知道.他们获取了这个随机密码之后,需要马上去系统中更改.这就 ...

最新文章

  1. linux shell编程语句if、case.
  2. iframe懒加载_懒加载是如何实现的?
  3. Project2010简易操作指南[转]
  4. 漫谈四种主流软件架构演进史
  5. 2018CHI paper: Communication Behavior in Embodied Virtual Reality
  6. wordpress如何获得当前用户的头像
  7. CentOS 6 和CentOS 7 的区别
  8. 生成随机 简体汉字 繁体汉字
  9. windows7系统iis安装不了应该怎么办
  10. 小程序tabBar图标显示太大
  11. 认识网络通信中的 ACK、NACK 和 REX
  12. 医疗大数据与智能医疗临床诊断(大数据人工智能公司)
  13. 38 全志平台的script.bin在linux内核里的应用分析
  14. 【每日蓝桥】10、一三年省赛Java组真题“剪格子”
  15. 基于浏览器的http普通请求与ajax请求
  16. AForge学习笔记(2):AForge.Controls
  17. 解决failed to solve with frontend dockerfile.v0: failed to create LLB definition: unexpected status co
  18. 转:数据库访问性能优化
  19. Spring笔记 整合SSM[Struts2框架] 万神小栈
  20. Spring异常:NoSuchBeanDefinitionException: No qualifying bean of type ‘it.com.dao.AccountDao‘ available

热门文章

  1. 政务外网、政务专网、政务内网和互联网
  2. 你不知道的Nmap之空闲扫描
  3. Airkiss智能配置上网
  4. Win10我们无法设置移动热点的解决办法
  5. 特斯拉 model y 配置
  6. MySQL下载安装详情教程
  7. 华创期货:成功的期货交易原则可有效避免亏损
  8. 教学老师 VS 科研教师
  9. Avue的upload数组图片上传以及删除后上传又出现的问题
  10. 用10元,20元,50元三种币值的纸币凑出1000元,一共有多少种组合(C++实现)三种思路,两种实现