继承知道吧
super就是子类调用父类的方法属性时候用的
比如一个子类B想想写父类A的方法,但是它只想改一点东西就好了,也就是说它还需要用到父类的方法
(举个例子父类的方法是吃苹果,子类想重写方法为吃苹果+吃香蕉,那么我们只要先调用父类的吃苹果方法,然后再加自己的吃香蕉逻辑就可以了,这样的好处就是不需要重新在方法里设计自己的方法了,一句话,)
super一般还在子类的构造方法中使用,因为子类的构造必须先要引出父类的构造(没老爸,哪来的你),而且super必须写在构造方法中第一行,这是规定1)super(参数):调用基类中的某一个构造函数(应该为构造函数中的第一条语句)
2)this(参数):调用本类中另一种形成的构造函数(应该为构造函数中的第一条语句)
3)super: 它引用当前对象的直接父类中的成员(用来访问直接父类中被隐藏的父类中成员数据或函数,基类与派生类中有相同成员定义时如:super变量名
super成员函数据名(实参)
4)this:它代表当前对象名(在程序中易产生二义性之处,应使用this来指明当前对象;如果函数的形参与类中的成员数据同名,这时需用this来指明成员变量名)
5)调用super()必须写在子类构造方法的第一行,否则编译不通过。每个子类构造方法的第一条语句,都是隐含地调用super(),如果父类没有这种形式的构造函数,那么在编译的时候就会报错。
6)super()和this()类似,区别是,super()从子类中调用父类的构造方法,this()在同一类内调用其它方法。
7)super()和this()均需放在构造方法内第一行。
8)尽管可以用this调用一个构造器,但却不能调用两个。
9)this和super不能同时出现在一个构造函数里面,因为this必然会调用其它的构造函数,其它的构造函数必然也会有super语句的存在,所以在同一个构造函数里面有相同的语句,就失去了语句的意义,编译器也不会通过。
10)this()和super()都指的是对象,所以,均不可以在static环境中使用。包括:static变量,static方法,static语句块。
11)从本质上讲,this是一个指向本对象的指针,
然而super是一个Java关键字。super 是用来调用父类中的方法的。
1 在子类的构造函数之中调用父类的构造函数, super(参数列表) 将会调用父类的构造函数, 该语句必须是子类构造函数的第一句。
2 在子类的非构造函数之中调用父类的非构造函数(此处不能调用父类的构造函数), 用法: super方法名(参数列表)。 如下面的:supertoString()是调用的父类之中的toString() 方法。
如下,一个具体的例子:
class Father {
private int val;
public Father(int a) {
val = a;
}
public int getValue() {
return val;
}
public String toString() {
return "FatherValue = " + val;
}
}
class Child extends Father {
int myValue;
public Child(int a) {
super(a); //调用Father类的构造方法,其只能在刚构造函数的第一句。
myValue = a+3;
}
public String toString() {
String s = supertoString(); //调用Father类之中的toString()方法。
return s + " ChildValue = " + myValue;
}
}
public class Test6 {
public static void main(String [] args) {
Child child = new Child(5);
Systemoutprintln(childtoString());
}
}
最后的输出结果:
FatherValue = 5 ChildValue = 8
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)