欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

java this和super

程序员文章站 2022-04-18 15:53:35
...

1、引用变量

this代表该类的对象,可以引用该类的实例变量、静态变量和方法。

super可以引用父类的实例变量、静态变量和方法。

this和super可以在类中任何地方使用调用变量方法,除了含静态块的区域不用使用this和super。

1.1 this

// Program to illustrate this keyword 
// is used to refer current class
class RR {
    // instance variable
    int a = 10;
 
    // static variable
    static int b = 20;
 
    void GFG()
    {
        // referring current class(i.e, class RR) 
        // instance variable(i.e, a)
        this.a = 100;
 
        System.out.println(a);
 
        // referring current class(i.e, class RR) 
        // static variable(i.e, b)
        this.b = 600;
 
        System.out.println(b);
    }
 
    public static void main(String[] args)
    {
        // Uncomment this and see here you get 
        // Compile Time Error since cannot use 
        // 'this' in static context.
        // this.a = 700;
        new RR().GFG();
    }
}

output:

100
600

1.2 super

// Program to illustrate super keyword 
// refers super-class instance
 
class Parent {
    // instance variable
    int a = 10;
 
    // static variable
    static int b = 20;
}
 
class Base extends Parent {
    void rr()
    {
        // referring parent class(i.e, class Parent)
        // instance variable(i.e, a)
        System.out.println(super.a);
 
        // referring parent class(i.e, class Parent)
        // static variable(i.e, b)
        System.out.println(super.b);
    }
 
    public static void main(String[] args)
    {
        // Uncomment this and see here you get 
        // Compile Time Error since cannot use 'super' 
        // in static context.
        // super.a = 700;
        new Base().rr();
    }
}

output:

10
20

2、构造函数

this()调用该类的构造函数。

super()调用父类的构造函数。

一般情况下,如果构造函数中没有super(),那么会默认调用父类的无参构造函数,相当于该构造函数的第一行隐含了super()语句。

this()和super()只能出现在构造函数的第一行,且不能同时出现this()和super()。因为同时出现,相当于初始化了对象两次,这是不允许的。

编译器也不允许通过this()来循环调用构造函数。

 

参考:

https://www.geeksforgeeks.org/difference-super-java/

https://www.geeksforgeeks.org/super-and-this-keywords-in-java/

 

 

 

 

 

 

 

 

 

相关标签: java this super