java super关键字,super和this的区别介绍

KLQ 2020-09-03 09:51:11 java常见问答 5770

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关键字用法:

super关键字用法

假如,构造方法的第一行代码不是this()和super(),那么,系统会默认添加super()。

this关键字用法:

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工具网来进行了解吧。

推荐阅读:

java super关键字,super访问父类成员详解

java super关键字,super调用父类构造方法详解

java关键字有哪些?java关键字大全