this和super关键字

mac2026-04-09  4

在继承的注意事项与继承中成员变量的关系中介绍了成员变量的关系和就近原则。我们知道了,在变量名一样的时候,谁离的最近调用谁,但是如果每一层都有一个同名的属性,但是我不想要离我最近的那个变量的值,我就想要父类或者子类里面定义的变量的值。这时,我们就需要this和super关键字。


this和super关键字

this表示本类当前对象的引用

super表示本类当前对象父类的引用

this和super使用细节:

含义:this关键字表示本类当前对象的引用, 哪个对象在调用this所在的方法,this就表示哪个对象

           super关键字表示本类当前对象的父类的引用 ,哪个对象在调用super所在的方法,super就表示哪个对象中的父类部分的数据

super和this都可以访问成员变量:

            super只能访问父类中定义的成员变量

            super.成员变量名

            this既可以访问子类中定义的成员变量,也可以访问父类中定义的成员变量

            this.成员变量名

super和this都可以访问成员方法:

            super只能访问父类中定义的成员方法

            super.成员方法名()

            this不仅可以访问子类中定义的成员方法,也可以访问父类中定义的成员方法

            this.成员方法名()

super和this都可以访问构造方法:this语句和super语句

            this():访问本类的其他构造方法

            super():访问父类的构造方法


代码示例: 

public class this和super关键字 { public static void main(String[] args) { Zi z = new Zi(); z.test(1000); } } class Fu { int i = 10; int j = 20; } class Zi extends Fu { int i = 100; int k = 200; public void test(int i) { System.out.println(i);//1000 //就近原则 System.out.println(this.i);//100 //本类的i System.out.println(super.i);//10 //父类的i System.out.println(j);//20 //就近原则,一层一层访问到了父类的j System.out.println(this.j);//20 //this可以访问子类,也可以访问父类,所以子类里面没有j,就访问了父类的j System.out.println(super.j);//20 //super就直接调用父类的j System.out.println(k);//200 //就近原则 System.out.println(this.k);//200 //访问子类 //System.out.println(super.k);//编译报错 // super只能访问到父类 } }

输出结果就直接在当行代码注释上写上了。更加直观一些。当我们学习完这个后,我们就可以学习更多关于继承和面向对象的知识了。

最新回复(0)