java回忆录—this和super的比较

Posted minigeek

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java回忆录—this和super的比较相关的知识,希望对你有一定的参考价值。

在JAVA程序中似乎经常见到“this”,自己也偶尔用到它,但是到底“this”该怎么用,却心中无数!很多人一提起它,就说“当前对象”,可到底什么是当前对象,是什么当前对象,他自己也不清楚。

先说下构造函数:

构造方法注意事项

如果你不提供构造方法,系统会给出默认构造方法

如果你提供了构造方法,系统将不再提供

构造方法也是可以重载的

this主要要三种用法:

1、表示对当前对象的引用

2、表示用类的成员变量,而非方法参数,注意在函数参数和成员变量同名是进行区分!其实这是第一种用法的特例,比较常用,所以那出来强调一下。

例子:
public class Test2 

    public static void main(String[] args) 
        Student s = new Student(10);
    


class Student 
    int age;
    String name;
    public Student(int age) 
        this.age = age++;
        System.out.println(age+";"+this.age); //参数与成员变量同名,用this区分开
    

结果:

3、用于在构造方法中引用满足指定参数类型的构造器(其实也就是构造方法)。

例子:
class Student 
    int age;
    String name;
    public Student(int age) 
        this.age = age;
    
    public Student(int age,String name) 
        this(age); //this调用一个参数的构造函数,且必须放在第一行,只能调用一次
        this.name = name;
    

但是这里必须非常注意:只能引用一个构造方法且必须位于开始!

还有就是注意:this不能用在static方法中!所以甚至有人给static方法的定义就是:没有this的方法!虽然夸张,但是却充分说明this不能在static方法中使用!

super主要有两种用法:

1)表示当前类的父类的引用

2)调用父类的同名成员变量或者方法(super.成员变量/super.成员方法)

2)显示地调用父类的构造器(super(parameter1,parameter2....)

这里就不多说,跟this的用法类似。

在子类构造函数中不显示调用父类构造函数的话,默认在子类构造函数的第一行调用父类的无参构造函数。
跟this一样要注意的是:如果是用在子类构造器中,则必须是子类构造器的第一个语句。

例子:

public class Test2 
    public static void main(String[] args)  
        new Circle();
    


class Draw 

    public Draw(String type) 
        System.out.println(type+" draw constructor");
    


class Shape 
    private Draw draw = new Draw("shape");//1

    public Shape()
        System.out.println("shape constructor");//2
    


class Circle extends Shape 
    private Draw draw = new Draw("circle");//3
    public Circle() 
        System.out.println("circle constructor");//4
    

结果:

这例子主要讲类继承时构造器的调用顺序和初始化顺序。

要记住一点:父类的构造器调用以及初始化过程一定在子类的前面。

由于Circle类的父类是Shape类,所以Shape类先进行初始化,然后再执行Shape类的构造器。

接着才是对子类Circle进行初始化,最后执行Circle的构造器。

以上是关于java回忆录—this和super的比较的主要内容,如果未能解决你的问题,请参考以下文章

Java中super的运行原理(super如何在内存中运行的)以及super和this的对比

java中super和this的用法

Android中怎么用this

2.23 Java基础总结 ①toString方法②equals③this和super④final⑤常量

Java的this

Java的this