嗨客网搜索
Java开发环境搭建
Java方法

Java语言super

Java语言super教程

如果子类想调用父类的构造方法,普通方法和属性,就可以使用 super 关键字。如果是调用父类的构造方法,super 和 this 关键字一样,需要放在子类的构造方法首行。

super详解

语法

super.构造方法/属性/方法

参数

参数 描述
super 使用 super 时用到的关键字
. 在使用 super 后面需要追加.

说明

super 表示调用父类中具有 权限 的属性或者方法。

案例

我们定义一个人父类,然后定义一个学生类作为子类,让学生类调用父类里面的构造方法,属性和方法。

我们定义一个 Person 的父类。

package com.haicoder.net.haisuper; public class Person { private String name; private Integer age; public Person(String name, Integer age) { this.name = name; this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Integer getAge() { return age; } public void setAge(Integer age) { this.age = age; } public String getInfo() { return "姓名 : " + this.getName() + " 年龄 :" + this.getAge(); } }

定义一个学生的子类:

package com.haicoder.net.haisuper; public class Student extends Person { private String school; public Student(String name, Integer age, String school) { super(name, age); this.school = school; } public String getSchool() { return school; } public void setSchool(String school) { this.school = school; } public String getInfo() { return "姓名 : " + this.getName() + " 年龄 :" + this.getAge() + " 学校 : " + this.getSchool(); } }

定义一个测试类:

package com.haicoder.net.haisuper; public class SuperTest { public static void main(String[] args) { System.out.println("嗨客网(www.haicoder.net)"); Student student = new Student("嗨客", 21, "嗨客大学"); System.out.println(student.getInfo()); } }

运行结果如下:

05 super.png

在例子中,我们用到了 this 关键字,也将子类里面的 info 方法进行了覆盖 ,我们发现 student 里面的构造方法调用了父类的构造方法,然后单独的给 school 这个字段进行了赋值。

我们对学生信息进行打印输出的时候,发现父类构造函数赋值的语句都被执行了,我们能够获取到相关信息。

Java this关键字和super关键字区别

区别点 this super
属性访问 访问本类中的属性,如果本类中没有属性就从父类中查找 访问父类中的属性
方法 访问本类中的方法,如果本类中没有就访问父类中的方法 访问父类中的方法
调用构造 调用本类的构造,必须放在构造函数首行 调用父类构造,必须放在子类构造方法首行
特殊 表示当前对象 没有这样的概念

Java super关键字总结

super 表示访问父类中的方法或者属性或者构造方法。必须要放在子类里面调用。

嗨客网顶部