java 继承 this super关键字的应有


在 Java 中,关键字 "this" 和 "super" 用于在类中访问当前对象或其超类的属性或方法。下面是这两个关键字的用法:

  1. "this" 关键字

  2. "this" 可以用于引用当前对象的属性或方法。

  3. "this" 可以用于区分局部变量和实例变量,如果方法中的局部变量与实例变量同名,可以使用 "this" 来引用实例变量。
  4. "this" 可以用于在一个构造函数中调用另一个构造函数。

例如:

public class Person {
    private String name;

    public Person(String name) {
        this.name = name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getName() {
        return this.name;
    }
}

在这个例子中,我们使用 "this" 来引用实例变量 name,并且在构造函数中使用 "this" 调用另一个构造函数。

  1. "super" 关键字

  2. "super" 可以用于引用父类的属性或方法。

  3. "super" 可以用于调用父类的构造函数。

例如:

public class Student extends Person {
    private int grade;

    public Student(String name, int grade) {
        super(name);
        this.grade = grade;
    }

    public void setGrade(int grade) {
        this.grade = grade;
    }

    public int getGrade() {
        return this.grade;
    }

    public void printName() {
        System.out.println(super.getName());
    }
}

在这个例子中,我们使用 "super" 调用父类的构造函数,并使用 "super" 引用父类的方法 getName()。

除了上述的基本用法,还有一些其他的应用场景:

  1. 在匿名内部类中使用 "this" 和 "super"

  2. 在匿名内部类中,如果需要引用外部类的成员变量或方法,可以使用 "this" 关键字,但是如果需要引用父类的成员变量或方法,就需要使用 "super" 关键字。

例如:

public class Example {
    private int value = 10;

    public void doSomething() {
        Runnable r = new Runnable() {
            @Override
            public void run() {
                System.out.println(value); // 使用 this 引用 Example 类的 value 成员变量
                System.out.println(super.toString()); // 使用 super 引用 Object 类的 toString() 方法
            }
        };
        r.run();
    }
}

在这个例子中,我们创建了一个匿名内部类,并使用 "this" 引用 Example 类的成员变量 value,使用 "super" 引用 Object 类的 toString() 方法。

  1. 在静态方法中使用 "this" 和 "super"

  2. 静态方法属于类,而不属于对象,因此不能使用 "this" 关键字引用对象的成员变量或方法,但是可以使用 "super" 关键字引用父类的静态成员变量或方法。

例如:

public class Example {
    private static int count = 0;

    public Example() {
        count++;
    }

    public static int getCount() {
        return count;
    }

    public static void doSomething() {
        System.out.println(Example.getCount()); // 使用类名引用静态成员变量 count
        System.out.println(Object.class.getName()); // 使用类名引用 Object 类的 getName() 方法
    }
}

在这个例子中,我们定义了一个静态方法 doSomething(),使用类名 Example 引用静态成员变量 count,并使用类名 Object 引用 Object 类的 getName() 方法。

总之,关键字 "this" 和 "super" 是 Java 中非常重要的关键字,可以用于访问对象的属性和方法,以及调用父类的构造函数和方法。熟练掌握它们的用法可以帮助程序员编写更加清晰、简洁和可读性高的代码。


原文链接:codingdict.net