`
飞飞向前冲
  • 浏览: 3354 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

super和this

    博客分类:
  • J2SE
阅读更多

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

 

分享到:
评论

相关推荐

    super和this之间的区别.docx

    在Java编程语言中,`super` 和 `this` 是两个非常重要的关键字,它们分别用于处理对象间的关联和访问。理解这两个关键字的区别对于编写高效的代码至关重要。 `this` 关键字代表当前对象,它指的是创建或正在执行...

    Java super和this的对比及使用

    "Java super和this的对比及使用" Java中的super和this是两个非常重要的关键字,它们在Java编程中扮演着非常重要的角色,但是在实际使用中,很多开发者会将它们混淆,或者不了解它们的真正用途。因此,本文将对Java...

    this和super的异同点

    知道this有集中用法吗?this和super的区别呢?每个理论对应这实例。。可以边看边操作。。加油吧。。

    Java中super和this的用法详解

    Java 中 super 和 this 的用法详解 Java 中的 super 和 this 是两个非常重要的关键字,它们都是用于访问对象的成员变量或方法的。下面我们将详细介绍 Java 中 super 和 this 的用法。 super 用法 super 关键字...

    JAVA进阶-Java继承,多态,重写,修饰符以及super与this使用,Oject对象

    在Java编程语言中,继承、多态、重写、修饰符以及`super`和`this`的使用是面向对象编程的核心概念。这些知识点对于理解和编写高效、可维护的代码至关重要。 1. **Java继承**: Java继承允许一个类(子类)继承另一...

    javathis和super用法 this和 super 关键字的区别

    在Java编程语言中,`this`和`super`是两个非常重要的关键字,它们在面向对象编程中扮演着不可或缺的角色。正确理解和使用这两个关键字对于编写高质量、易于维护的Java代码至关重要。 #### 二、`this`关键字详解 ##...

    Java中的this和super的用法 

    Java 中的 this 和 super 的用法 Java 中的 this 和 super 是两个非常重要的关键字,它们都是用来访问对象的成员变量和方法的。下面我们将详细地讨论这两个关键字的用法和区别。 一、基础知识 1. super(参数):...

    Java中this与super的区别

    静态方法,也就是类方法中不能有this和super关键字 1. 子类的构造函数如果要引用super的话,必须把super放在函数的首位. 复制代码 class Base { Base() { System.out.println("Base"); } } public ...

    Java中this与super的用法

    Java 中的 this 和 super 是两个非常重要的关键字,它们都是用来访问对象或父类的成员变量或方法的。下面我们将详细地讲解它们的用法和区别。 首先,让我们来看一下 this 关键字。this 关键字是用来访问当前对象的...

    java基础知识 super和this使用解析

    在Java编程语言中,`super`和`this`是两个非常重要的关键字,它们在类的继承和对象实例化过程中起到关键作用。这篇文章将详细解析这两个关键字的使用。 首先,`super`关键字主要用于子类中,它允许我们访问父类的...

    Java中两个非常特殊的变量:this和super

    在Java编程语言中,`this`和`super`是两个非常关键的特殊变量,它们提供了在类和对象间导航的能力。这两个关键字无需提前声明,它们各自有着特定的用途。 首先,`this`关键字用于引用当前对象。在成员函数内部,`...

    详解Java使用super和this来重载构造方法

    在Java编程语言中,`super` 和 `this` 关键字是用于在类的构造方法之间进行调用和引用的。这两个关键字对于理解和实现对象的初始化至关重要,尤其是在处理继承关系时。下面我们将深入探讨 `super` 和 `this` 的概念...

    java中this 与super的详解

    java中this 与super的详解

    java中this与super用法

    在 Java 中,this 和 super 是两个重要的关键字,它们都是用于访问当前对象或父类中的成员变量或方法的。 this 用法 this 的用法在 Java 中大体可以分为三种: 1. 普通的直接引用 在类的成员方法中,可以使用 ...

    static、this、super、final的JAVA用法

    Java 中 static、this、super、final 的用法 静态方法(static method)是一种特殊的方法,它可以在不需要创建对象的情况下被调用。Java 中的静态方法使用 static 关键字来修饰,例如 public static void main...

    Java中static、this、super、final用法

    在Java编程语言中,`static`, `this`, `super`, 和 `final` 是四个非常重要的关键字,它们分别代表不同的概念并具有特殊的用法。 一、`static` `static` 关键字用于声明类级别的成员(变量或方法),这意味着它们...

    Java中static、this、super、final用法简谈

    Java中的`static`、`this`、`super`和`final`是四个非常重要的关键字,它们在编程中扮演着至关重要的角色。这篇文章将简要介绍这些关键字的基本用法及其应用场景。 1. **static** `static`关键字用于声明类级别的...

Global site tag (gtag.js) - Google Analytics