Java中this和super的用法总结

介绍

this指代的是:

  • We can call the superclass methods and access superclass variables using super keyword
  • 如果执行的是一般方法 的话,this指代的是当前对象,但不一定是当前类的对象
  • 如果执行的是构造方法的话,this只能指代当前对象,不会有机会指代子类对象

super指代的是:

  • 包含这个super语句的执行方法所在类的父类的对象 !!!自己总结的这句话

  • this和super都是指代词:代替的是实例对象
  • this和super都能调用一般属性一般方法(而非静态的)

this和super可以放在类成员的任意位置

  • 属性
  • 方法
  • 构造方法

super 和 this 可以互相调用吗?

(1) 一般方法之间

  • 任意两个一般方法可以来回相互调用,编译能过,但是有可能会出现栈内存溢出

(2) 构造方法之间

  • this 和 super 可以在构造方法中调用自己或父类的构造方法,但是必须要放在构造方法的第一行否则编译报错,而且此时顶替掉了默认的super()构造方法;

  • 任意两个构造方法不能来回相互调用,编译过不去,因为他们来来回调用,没有给super留一个位置去创建父类对象;

  • 构造方法中以下不允许:出现多个 this,多个 super,super 和 this 的组合。因为都要求第一行的话,但是不能同时出现在代码的第一行;


综述对比

We can call the superclass methods and access superclass variables using super keyword
1.thissuper都是指代词:代替的是实例对象
2.this指代的是:执行方法是一般方法  当前对象,但不一定是当前类的对象--
				   如果执行的是构造方法的话,this只能指代当前对象,不会有机会指代子类对象
3.super指代的是:包含这个super语句的执行方法所在类的父类的对象 !!!!!!!!!!!!!!!!!!自己总结的这句话
4.thissuper都能调用一般属性和一般方法(而非静态的)
5.thissuper可以放在类成员的任意位置---属性--方法--构造方法--5.1一般方法之间---任意两个一般方法可以来回相互调用---编译能过---但是有可能会出现栈内存溢出
	5.2构造方法之间---任意两个构造方法不能来回相互调用---编译过不去-----因为他们来来回调用---没有给super留一个位置去创建父类对象
	5.3this 和 super 可以在构造方法中来调用自己或父亲类的构造方法,必须要放在构造方法的第一行---否则编译报错--而且此时顶替掉了默认的super()构造方法
	5.4构造方法中以下不允许:出现多个 this---多个 super---superthis 的组合。因为都要求第一行的话,但是不能同时出现在代码的第一行

你可能感兴趣的:(基础知识,java)