this指的是当前对象的引用,super是当前对象的父对象的引用,下面的话就对这两者的区别来进行一下详细的介绍。
Java super关键字和this关键字的区别:
1、从本质上面来讲的话,this是一个指向对象本身的指针, super是一个Java关键字。
2、this和super不能同时出现在一个构造方法里面。
这主要是因为this必然会调用其它的构造方法,其它的构造方法中肯定会有super语句的存在,所以在同一个构造方法里面有相同的语句,就失去了语句的意义,编译器也不会通过。
3、子类和父类中变量或方法名称相同的时候,用super关键字来访问。
我们可以这样理解,super是指向自己父类对象的一个指针,在子类中调用父类的构造方法。
4、this( )和super( )都指的是对象,所以,都不可以在static环境当中使用,包括static变量、static方法和static语句块。
5、this是自身的一个对象,代表对象本身,可以理解成this是指向对象本身的一个指针。
在同一个类中调用其它方法。
super关键字用法:
假如,构造方法的第一行代码不是this()和super(),那么,系统会默认添加super()。
this关键字用法:
在局部变量和成员变量发生冲突的时候,用this.进行区分。
下面的话可以来看一下示例:
在Animal类和Cat类当中,分别定义了public类型的name属性和private类型的name属性,并且Cat类继承Animal类。
这样的话,可以在Cat类当中通过super关键字来访问父类Animal中的name属性,通过this关键字来访问本类中的name属性。
代码:
// 父类Animal的定义 public class Animal { public String name; // 动物名字 } //子类Cat的定义 public class Cat extends Animal { private String name; // 名字 public Cat(String aname, String dname) { super.name = aname; // 通过super关键字来访问父类中的name属性 this.name = dname; // 通过this关键字来访问本类中的name属性 } public String toString() { return "我是" + super.name + ",我的名字叫" + this.name; } public static void main(String[] args) { Animal cat = new Cat("动物", "喵星人"); System.out.println(cat); } }
输出结果:
我是动物,我的名字叫喵星人
关于这两者的区别你都了解了吗?更多java基础知识,请继续关注奇Q工具网来进行了解吧。
推荐阅读: