不显示调用super_JavaSE 笔记—— this 与 super

一、this 与 super 的地位

首先我们需要回忆一个概念,所有对象的父类都是 Object 类,这就意味着,所有的对象实例化的时候都需要先调用 Object 的无参构造方法。

而连接对象和 Object 至少需要一条道路,而 this 和 super 就是这个最重要的工兵,逢山开路,遇水搭桥。

而 this 和 super 两个往往身藏功与名,默默无闻,很多情况都可以省略。
比如:

  • 本类方法调用本类属性
  • 本类方法调用另一个本类方法
  • 子类构造方法隐含调用 super()

二、类创建的过程


任何类在创建之初,都有一个默认的无参构造方法,它是 super() 的一条默认通路。构造方法的参数列表决定了调用通路的选择;如果子类指定调用父类的某个构造方法,super 就会不断的向上溯源(每个对象必然是继承一个父类,这块地意思就是沿着一层一层的路径找到 Object 类);如果没有指定,则调用 super() 。如果父类没有提供默认的构造方法,子类在继承时就会编译错误。

class Father{
    public Father(int a){
    }
}

//这块就会报错,因为子类没有明确的指定继承父类的某个构造方法,而且父类也没有默认的无参构造方法
class Son1 extends Father{          
}

//正确的方式
class Son2 extends Father{  
     public Son2{
           super(1);
     }        
}

如果父类坚持不提供无参的构造方法,就必须如上图的Son2类的无参构造方法中使用 super 方式调用父类的某个有参构造方法。

2.1 this 的作用

一个实例变量可以通过 this. 赋值另一个实例变量;一个实例方法可以通过 this. 调用另一个实例方法;甚至一个构造方法也可以通过 this. 调用另一个构造方法。

2.2 super的作用

1、普通的直接引用

与this类似,super相当于是指向当前对象的父类,这样就可以用http://super.xxx来引用父类的成员。

2、子类中的成员变量或方法与父类中的成员变量或方法同名。

3、引用构造函数

super(参数):调用父类中的某一个构造函数(应该为构造函数中的第一条语句)。

this(参数):调用本类中另一种形式的构造函数(应该为构造函数中的第一条语句)。

2.3 this 和 super 使用注意

(1) 如果 this 和 super 指代构造方法,则必须位于方法体的第一行。换句话说,在一个构造方法中,this 和 super 只能出现一个,且只能出现一次,否则在实例化对象时,会因为子类调用多个构造方法而造成混乱。

(2) 由于 this 和 super 都在实例化阶段调用,所以不能在静态方法和静态代码块中使用 this 和 super 关键字。

(3) this 还可以值代当前对象,比如在同步代码块 synchronized(this){....}中,super 就不具备这种能力。但是 super 也有自己独特的功能,在子类覆盖父类方法的时候,可以使用 super 调用父类的同名方法。

3、 总结

fede893f34135d765922394bdc07e335.png
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值