013-关键字super

声明:个人全部文章,都是对网上教学视频的整理,包括狂神说、尚硅谷、黑马程序员等等,用来做为参考资料,无任何商业使用,请广大网友参考,不喜勿喷,谢谢。(注意,因为网站的缘由,有些代码字符可能会出现问题,建议你们阅读代码时,最好和下面的图片对应来看)
1、在Java类中使用super来调用父类中的指定操做
一、super可用于访问父类中定义的属性
二、super可用于调用父类中定义的成员方法
三、super可用于在子类构造器中调用父类的构造器
注意:
一、当子父类出现同名成员时,能够用super代表调用的是父类中的成员
二、super的追溯不只限于直接父类
三、super和this的用法相像,this表明本类对象的引用,super表明父类的内存空间的标识
示例:








程序员

class Person {
protected String name = “张三”;
protected int age;
public String getInfo() {
return “Name:” + name + “\nage:” + age;
}
}
class Student extends Person {
protected String name = “李四”;
private String school = “New Oriental”;
public String getSchool() {
return school;
}
public String getInfo() {
return super.getInfo() + “\nschool:” + school;
}
}
public class StudentTest {
public static void main(String[] args) {
Student st = new Student();
System.out.println(st.getInfo());
}
}





















ide

2、调用父类的构造器
一、子类中全部的构造器默认都会访问父类中空参数的构造器
二、当父类中没有空参数的构造器时,子类的构造器必须经过this(参数列表)或者super(参数列表)语句指定调用本类或者父类中相应的构造器。同时,只能”二选一”,且必须放在构造器的首行
三、若是子类构造器中既未显式调用父类或本类的构造器,且父类中又没有无参的构造器,则编译出错
示例:



网站

class Person {
private String name;
private int age;
private Date birthDate;


this

public Person(String name,int age,Date d) {
this.name = name;
this.age = age;
this.birthDate = d;
}
public Person(String name,int age) {
this(name,age,null);
}
public Person(String name,Date d) {
this(name,30,d);
}
public Person(String name) {
this(name,30);
}
}













视频

public class Student extends Person {
private String school;
public Student(String name,int age,String s) {
super(name,age);
school = s;
}
public Student(String name,String s) {
super(name);
school = s;
}
//编译出错:no super(),系统将调用父类无参数的构造器
public Student(String s) {
school = s;
}
}













对象

3、this和super的区别
013-关键字super
blog

相关文章
相关标签/搜索