this与super的区别
来源:互联网 发布:h3c交换机查看mac地址 编辑:程序博客网 时间:2024/05/22 02:12
介绍: this:当前对象
super:直接父类对象
this():当前类的无参构造方法,也可以指定有参的如:this(a)
super():直接父类的无参构造方法,也可以指定有参的如:super(a)
注意:1,当在方法内调用一个变量b,编译器会向上遍历,直到找到最近的一个引用变量为止:b—>this.b—>super.b,如果未找到,编译器将显式提 示错误信息;
2,当变量b的定义只发生在父类时,此时 b=this.b=super.b;
3,当局部变量b覆盖成员变量b时,使用this.b调用成员变量,此时的成员变量包括子类新增和继承的变量,不包含隐藏变量;
4,当子类成员变量b覆盖父类成员变量b时,使用super.b调用这个被隐藏的成员变量;
5,当子类重写了父类方法method(),可以使用super.method()来调用父类被隐藏的方法;
6,super()与this()具备硬性使用条件,否则编译无法通过——Constructor call must be the first statement in a constructor.即
二者出现的位置必须是构造方法的第一行;
7,super()与this()并不像super.b与this.b一样可以向下替代,因为子类并不能继承父类的构造方法,仅仅是包含了父类的有参或无参构造器 (默认无参);
8,Implicit[不言明的,隐式的] super constructor Subject() is undefined. Must explicitly[明确地] invoke another constructor,这句话表明:
子类的构造方法中必须调用父类的构造方法,如果没有显式写出super(),则默认调用父类的无参构造方法。但此时如果父类写了有参的构 造方法,编译器就不会再为父类默认创建无参构造方法,此时super()没有被定义,则必须在子类的构造方法中写明super(参数)或者在父类 中显式写出父类的无参构造方法;
实例:
父类
子类运行结果- super与this的区别:
- super()与this()的区别?
- this与super的区别
- super()与this()的区别
- super与this的区别
- this 与 super 的区别
- super()与this()的区别?
- Super与this的区别
- super()与this()的区别?
- Super与this的区别
- this与super的区别
- java中super()与this()的区别
- java中 this 与 super 的区别
- java中super()与this()的区别
- java中super()与this()的区别
- java this与super的区别
- Java中super与this的区别
- super()与this()的超详细区别
- Bytes("ISO8859-1"),"GBK")的实质
- SpringBoot入门-12(springboot配置servlet,利用代码实现)
- maven 打包错误解决:Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:2.5:test
- Tomcat couldnotinitializeclasssun.awet.X11GraphicsEnvironment
- CppPrimer自学(3)公有继承
- this与super的区别
- scrollview和gridview嵌套使用的注意事项
- 为什么会需要消息队列(MQ)?
- Git指令集
- Windows 如何将分卷文件合并为一个文件
- AuxKlibQueryModuleInformation---from ddk 文档
- Python 入门实践
- pi64之raspi-config问题
- 关于android 使用MINA还是RMI框架的问题