super与this的用法
Posted klb561
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了super与this的用法相关的知识,希望对你有一定的参考价值。
1 super和this都是调用其他的构造方法
super放在构造方法的第一条语句,调用父类的某种构造方法,如果没有super语句,会默认调用父类中无参的构造方法,如果父类构造方法指明而且都有参数,子类中会报错,this调用本类中其他某个构造方法,也要放在构造方法第一行
2 父类和子类中有相同名字的成员变量时,父类的会被覆盖,如果想使用父类的成员,应该使用super.方法名或者super.对象名
3 程序中有相同名字的变量时,this可以用来指代当前对象名
如 private String name;
public void setName(String name)
this.name=name;
4 super和this不能在同一个构造方法中
5 super和this都是指代对象,不能在static环境中使用
6 this代表指向本对象的指针,而super是一个Java关键字
————————————————
super的用法
准备知识:关键字this
<1.构造函数传递,this(a,b)表示调用另外一个构造函数;
<2. 在一个类的非static成员内部使用,表示当前这个对象;
super和this类似
<1.调用父类的构造函数;
<2.在一个类中的非static成员内部使用
<3. 调用父类的protected函数
————————————————
在python中引入super()的目的是保证相同的基类只初始化一次(注意:
1super ()机制是用来解决多重继承的,对于直接调用父类名是没有问题的,但在之后根据前人的经验就是:要么都用类名调用,要么就全部用super(),不要混合的用,由此为人做事还是要专一的嘛O(∩_∩)O~
2 super()继承只能用于新式类,用于经典类时就会报错。
新式类:必须有继承的类,如果无继承的,则继承object
经典类:没有父类,如果此时调用super就会出现错误:『super() argument 1 must be type, not classobj)
参考
https://blog.csdn.net/u011467044/article/details/52205961
以上是关于super与this的用法的主要内容,如果未能解决你的问题,请参考以下文章