super关键词的使用
1.概念
- super理解为
父类的 - super可以用来调用
属性、方法、构造器
2.使用
- 我们可以在子类的方法或构造器中,通过使用
super.属性或者super.方法的方式,显式的调用父类中声明的属性或者方法,但是通常情况下,我们习惯省略super - 特殊情况下,当子类和父类中定义了同名的属性时(
同名属性不会覆盖),我们要想在子类中调用父类中声明的属性,则必须显式的使用super.属性的方式,表明调用的是父类中声明的属性 - 特殊情况下,当子类重写了父类中的方法以后,使用
super.方法,表明调用的是父类中被重写的方法 - super 构造器
- 我们可以在子类的构造器中显式的使用
super(形参列表)的方式,调用父类红声明的指定的构造器 super(形参列表)的使用,必须声明在子类构造器的首行- 我们在类的构造器中针对于
this(形参列表)或super(形参列表)只能二选一,不能同时出现 - 在构造器的首行,没有显式的声明
this(形参列表)或者super(形参列表)则默认调用的是父类中空参的构造器 - 在类的多个构造器中,至少有一个类的构造器使用了
super(形参列表),调用父类中的构造器
- 我们可以在子类的构造器中显式的使用
3.code举例
-
父类
public class Person { String name; int age; int id = 1001;// 身份证号 public Person() { } public Person(String name, int age) { this.name = name; this.age = age; } public void eat() { System.out.println("人吃饭"); } public void walk() { System.out.println("人走路"); } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } } -
子类
package com.lmwei.p9; public class Student extends Person{ String major; int id = 1009; //学号 子类和父类出现同名的属性 子父类属性不会覆盖 public Student() { } public Student(String major) { // 默认调用super() 构造器 super("小黑", 19); this.major = major; } @Override public void eat() { System.out.println("学生多吃有营养的食物"); } public void study() { System.out.println("学生学习"); // 调用父类中被重写的方法 super.eat(); } // 调父类的属性 public void show() { // this 和 super 都指向Student对象的的属性 System.out.println("name= " + this.name + " age= " + super.age); // 子类属性id System.out.println("id= " + id); // 父类属性id System.out.println("id= " + super.id); } } -
测试类
package com.lmwei.p9; public class SuperTest { public static void main(String[] args) { Student s = new Student("计算机"); s.show(); System.out.println("------------------------------------------"); // 演示使用 super.方法 调用父类的方法 s.study(); } }
1119

被折叠的 条评论
为什么被折叠?



