`

Java中this与super

    博客分类:
  • Java
阅读更多
1. Java中this

this代表对象本身,利用this可以表示当前对象、调用属性、调用方法。

1. 普通的直接引用

2. 形参与成员名字重名,用this来区分
age是GetAge成员方法的形参,this.age是Person类的成员变量。this.output()调用方法。
class Person {
    private int age = 20;
    public Person() {
        this.output();
    }
    public int getAge(int age) {
        this.age = age;
        return this.age;
    }
    public void output() {
        System.out.println("初始化年龄:" + age);
    }
}
public class PersonTest {
    public static void main(String[] args) {
        Person andrew = new Person();
        System.out.println("Andrew年龄:" + andrew.getAge(18));
    }
}
初始化年龄:20
Andrew年龄:18

3. 引用构造函数
this(age)调用public Person(int age)构造函数
class Person {
    private int age;
    private String name;
    public Person(int age) {
        this.age = age;
    }
    public Person(int age, String name) {
        this(age);
        this.name = name;
    }
}


2. Java中super

super是指向自己超(父)类对象的一个指针,而这个超类指的是离自己最近的一个父类。

1. 普通的直接引用

2. 子类中的成员变量或方法与父类中的成员变量或方法同名
这里调用了父类的成员变量和方法,如果没有super.getAge(),super.age的值默认为0
class Person {
    int age;
    void getAge() {
        age = 20;
    }
}
class OnePerson extends Person {
    int age;
    void getAge() {
        age = 18;
        super.getAge(); // super调用父类中的方法
        System.out.println("person年龄:" + super.age); // super调用父类中的成员变量
        System.out.println("one person年龄:" + age);
    }
}
public class PersonTest {
    public static void main(String[] args) {
        OnePerson onePerson = new OnePerson();
        onePerson.getAge();
    }
}
person年龄:20
one person年龄:18

3. 引用构造函数
使用super()和super(age, name)分别调用父类不同的构造方法
class Person {
    private int age;
    private String name;
    public Person() {}
    public Person(int age, String name) {
        this.age = age;
        this.name = name;
    }
}
class OnePerson extends Person {
    private int age;
    private String name;
    public OnePerson() {
        super();
    }
    public OnePerson(int age, String name) {
        super(age, name);
    }
}


3. Java中this和super的对比总结

1. this():必须写在同一类构造方法的第一行,否则编译不通过
   super():必须写在子类构造方法的第一行,否则编译不通过

2. this(param):调用本类中另一种形成的构造函数,同时保证this是构造函数的第一条语句
   super(param):调用基类(父类)中的某一个构造函数,同时保证super是构造函数的第一条语句

3. this.param:如果函数的形参与类中的成员数据同名,这时需用this来指明成员变量名
   super.param/super.method():引用当前对象的直接父类中的成员变量或方法,用来区分父类子类中相同的成员变量和方法

4. this和super不能同时出现在一个构造函数里面,也不能出现两个this或者super

5. this()和super()都指的是对象,所以,不可以在static环境中使用

6. 从本质上讲,this是一个指向本对象的指针, 然而super是一个Java关键字

分享到:
评论

相关推荐

    Java中this与super的用法

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

    Java中this与super的区别

    Java中this与super的区别 this&super; 什么是this,this是自身的一个对象,代表对象本身,可以理解为:指向对象本身的一个指针。 Java关键字this只能用于方法的方法体内。当一个对象创建后, Java虚拟机(JVM)就...

    java中this与super用法

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

    java中this 与super的详解

    java中this 与super的详解

    Java中的this和super的用法 

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

    Java中this与super关键字的对比使用.pdf

    在Java编程语言中,this与super是两个十分重要的关键字,它们被频繁地用于对象的引用和继承体系中。本文档旨在深入探讨this与super的关键用法,帮助Java开发者们更好地理解并正确运用这两个关键字,从而提高代码的...

    Java中this与super关键字的对比使用.zip

    在Java编程语言中,`this`和`super`是两个非常重要的关键字,它们在类的继承和对象引用中起着至关重要的作用。本篇将详细阐述这两个关键字的含义、用法以及它们之间的区别。 首先,`this`关键字代表当前对象的引用...

    java中this&super的区别.txt

    ### Java中this与super的区别详解 #### 一、前言 在Java编程语言中,`this`和`super`是两个非常重要的关键字,它们在面向对象编程中扮演着至关重要的角色。正确理解和使用这两个关键字对于编写高效、清晰的代码至...

    java中this和supper的详细区分

    ### Java中this与super的详细区分 在Java编程语言中,`this`和`super`是两个非常重要的关键字,它们分别用于引用当前对象和父类的对象。正确理解和使用这两个关键字对于编写高质量、易于维护的代码至关重要。 ####...

    Java中static、this、super、final用法

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

    Java中this、super用法.pdf

    Java 中的 this 和 super 用法 在 Java 中,this 和 super 是两个非常重要的关键字,它们在编程中扮演着重要的角色。本文将详细介绍 this 和 super 的用法和意义,以便读者更好地理解和掌握它们。 this 在 Java ...

    Java中this、super用法[归类].pdf

    Java 中 this 和 super 的用法 Java 中的 this 和 super 是两个重要的关键字,它们在面向对象的编程中扮演着非常重要的角色。本文将详细介绍这两个关键字的用法和意义。 this 关键字 在 Java 中,this 通常指当前...

    java中this/super用法

    Java 中的 `this` 和 `super` 是两个非常重要的关键字,它们在编写面向对象程序时起到关键作用。`this` 关键字主要用来引用当前对象的属性和方法,而 `super` 关键字则用于引用父类的属性和方法。 1. `this` 关键字...

    java中this与super关键字的使用方法

    在Java编程语言中,`this` 和 `super` 是两个非常重要的关键字,它们在处理类的继承关系时起到关键作用。下面将详细解释这两个关键字的使用方法和它们的区别。 首先,`this` 关键字: 1. **普通直接引用**: `...

    Java中 this 和 super 的简明介绍

    在Java编程语言中,`this`和`super`是两个非常关键的关键词,它们帮助开发者在处理类的内部引用和继承关系时更加清晰和高效。本文将深入探讨这两个概念及其在实际编程中的应用。 首先,`this`关键字代表当前对象的...

    java中this&super的用法小结.doc

    ### Java中this&super的用法小结 #### 一、`this`关键字的理解与运用 **1.1 使用 `this` 引用成员变量** `this` 关键字主要用于解决成员变量与局部变量(如方法参数)同名时的混淆问题。在类的构造方法或方法中,...

Global site tag (gtag.js) - Google Analytics