super
1.调用父类的构造方法 super(参数列表)
子类中调用父类无参构造时super()可写可不写
子类调用父类有参构造时,super(参数列表);
必须要写,告诉编译器调用的是哪个父类的有参构造。
super调用父类普通方法
super 方法名(参数列表)调用被覆写的方法
class person{
public void print(){//父类普通方法
System.out.println("hello");
}
}
class student extends person{
public void print(){//覆写print()方法
super.print(); //调用父类方法
System.out.println("nihaoma");}
}
public class hehe{
public static void main(String[]args){
student stu=new student();
stu.print();
}
}
2.调用父类属性
class Person{
public String info = "爸爸!";
}
class Student extends Person{
public String info = "儿子!" ;
public void print(){
//不找本类中的属性
System.out.println(super.info);
System.out.println(this.info);
}
}
public class hehe{
public static void main(String[] args) {
new Student().print();
}
}
this
(1) this调用本类的属性
This.属性名 明确表示调用类中同名属性
规范:在类的普通方法中访问本类属性,一定要加this关键字
(2) this调用本类方法
调用普通方法 this.方法名称(参数)
调用构造方法 this(参数):
A. this调用其他构造方法必须放在首行调用----编译器语法错误
B. this调用构造方法不允许成环----编译器语法错误
(3) this表示当前对象
在有参构造中,先调用无参构造,this( )调用本类对象。
***super与this在构造方法中不能同时存在,即子类不存在构造方法的互相调用。
super和this的区别