this和super的区别
No. |
区别 |
this |
super |
1 |
操作属性 |
this.属性:表示调用本类中的属性,如果本类中的属性不存在,则从父类查找 |
super.属性:表示调用父类中的属性 |
2 |
操作方法 |
this.方法():表示调用本类中的方法,如果本类中的方法不存在,则从父类查找 |
super.方法():表示调用父类中的方法 |
3 |
调用构造 |
this()调用本类中的其他构造方法 |
super():由子类调用父类中的构造方法 |
4 |
查找范围 |
先从子类中查找,如果没有从父类中查找 |
不查子类直接查找父类 |
5 |
特殊 |
当前对象 |
- |
super()子类调用父类构造方法,每子类构造方法第1行(若没有在构造方法里调用super(),则会默认调用无参super()),因若想实例化子类对象,则必须先实例化其父类对象.
package extend; /** * the parent class * @author yangfei * @since 2014-3-31 */ public class Person { public Person(){ System.out.println("this is a person"); } public Person(String name){ System.out.println("this is a person,his name is "+name); } public Person(String name,int age){ System.out.println("this is a person,his name is "+name+" and his age is "+age); } public void print(){ System.out.println("print person"); } }
子类代码
package extend; /** * @author yangfei * @since 2014-3-31 */ public class Chinese extends Person{ /** * */ public Chinese() { //super(); System.out.println("this is a chinese"); } /** * @param name * @param age */ public Chinese(String name, int age) { //super(name, age); System.out.println("this is a chinese,his name is "+name+" and his age is "+age); } /** * @param name */ public Chinese(String name) { //super(name); System.out.println("this is a chinese,his name is "+name); } public void print(){ super.print(); System.out.println("in Chinese"); System.out.println(super.getClass().getCanonicalName()); } public static void main(String args[]){ Chinese chinese1 = new Chinese("yangfei"); chinese1.print(); } }
运行结果
this is a person this is a chinese,his name is yangfei print person in Chinese extend.Chinese
测试证明:
1.在构造函数中若不显式的调用super(),系统会默认调用父类的无参构造函数。
2.super.getClass().getCanonicalName()返回的是当前类的名称,这个请参考http://blog.csdn.net/sujudz/article/details/8034770
相关推荐
在Java编程语言中,`super` 和 `this` 是两个非常重要的关键字,它们分别用于处理对象间的关联和访问。理解这两个关键字的区别对于编写高效的代码至关重要。 `this` 关键字代表当前对象,它指的是创建或正在执行...
"Java super和this的对比及使用" Java中的super和this是两个非常重要的关键字,它们在Java编程中扮演着非常重要的角色,但是在实际使用中,很多开发者会将它们混淆,或者不了解它们的真正用途。因此,本文将对Java...
知道this有集中用法吗?this和super的区别呢?每个理论对应这实例。。可以边看边操作。。加油吧。。
Java 中 super 和 this 的用法详解 Java 中的 super 和 this 是两个非常重要的关键字,它们都是用于访问对象的成员变量或方法的。下面我们将详细介绍 Java 中 super 和 this 的用法。 super 用法 super 关键字...
在Java编程语言中,继承、多态、重写、修饰符以及`super`和`this`的使用是面向对象编程的核心概念。这些知识点对于理解和编写高效、可维护的代码至关重要。 1. **Java继承**: Java继承允许一个类(子类)继承另一...
在Java编程语言中,`this`和`super`是两个非常重要的关键字,它们在面向对象编程中扮演着不可或缺的角色。正确理解和使用这两个关键字对于编写高质量、易于维护的Java代码至关重要。 #### 二、`this`关键字详解 ##...
Java 中的 this 和 super 的用法 Java 中的 this 和 super 是两个非常重要的关键字,它们都是用来访问对象的成员变量和方法的。下面我们将详细地讨论这两个关键字的用法和区别。 一、基础知识 1. super(参数):...
静态方法,也就是类方法中不能有this和super关键字 1. 子类的构造函数如果要引用super的话,必须把super放在函数的首位. 复制代码 class Base { Base() { System.out.println("Base"); } } public ...
Java 中的 this 和 super 是两个非常重要的关键字,它们都是用来访问对象或父类的成员变量或方法的。下面我们将详细地讲解它们的用法和区别。 首先,让我们来看一下 this 关键字。this 关键字是用来访问当前对象的...
在Java编程语言中,`super`和`this`是两个非常重要的关键字,它们在类的继承和对象实例化过程中起到关键作用。这篇文章将详细解析这两个关键字的使用。 首先,`super`关键字主要用于子类中,它允许我们访问父类的...
在Java编程语言中,`this`和`super`是两个非常关键的特殊变量,它们提供了在类和对象间导航的能力。这两个关键字无需提前声明,它们各自有着特定的用途。 首先,`this`关键字用于引用当前对象。在成员函数内部,`...
在Java编程语言中,`super` 和 `this` 关键字是用于在类的构造方法之间进行调用和引用的。这两个关键字对于理解和实现对象的初始化至关重要,尤其是在处理继承关系时。下面我们将深入探讨 `super` 和 `this` 的概念...
java中this 与super的详解
在 Java 中,this 和 super 是两个重要的关键字,它们都是用于访问当前对象或父类中的成员变量或方法的。 this 用法 this 的用法在 Java 中大体可以分为三种: 1. 普通的直接引用 在类的成员方法中,可以使用 ...
Java 中 static、this、super、final 的用法 静态方法(static method)是一种特殊的方法,它可以在不需要创建对象的情况下被调用。Java 中的静态方法使用 static 关键字来修饰,例如 public static void main...
在Java编程语言中,`static`, `this`, `super`, 和 `final` 是四个非常重要的关键字,它们分别代表不同的概念并具有特殊的用法。 一、`static` `static` 关键字用于声明类级别的成员(变量或方法),这意味着它们...
Java中的`static`、`this`、`super`和`final`是四个非常重要的关键字,它们在编程中扮演着至关重要的角色。这篇文章将简要介绍这些关键字的基本用法及其应用场景。 1. **static** `static`关键字用于声明类级别的...