super:代表本类继承的直接父类当前的对象
super关键字的用法:
1.在子类构造方法中通过super关键字调用这个类的父类的构造方法
·构造方法调用顺序:根基类、...... 、父类的父类、父类、子类
·默认调用无参构造方法
·父类若无无参构造方法,必须在子类构造方法中显式调用父类构造方法,否则编译报错
·只能放在方法的第一行,this与super不能在同一方法中使用(因为this也需要写在方法的第一行,所以this与super不能在同一方法中使用)
代码示例如下:
package oneHundredDayPlan.twoDay;
public class Five {
String name = "乐悠小码";
public Five(int a){//有参的构造方法
System.out.println("这是一个有参的构造方法");
}
}
package oneHundredDayPlan.twoDay;
public class TestFive extends Five {
public TestFive(){
//当父类的构造方法是无参的,那么在子类的构造方法中可以不显示调用。但是当父类的构造方法不是无参的
//构造方法,那么在子类中必须显示调用父类的构造方法,否则编译报错
//super的第一种用法就是在子类的构造方法中调用父类的构造方法,且只能放在第一行上
super(10);
System.out.println("子类的构造方法");
}
}
2.当父类的成员和子类的成员名字相同,那么在子类中会将父类的成员屏蔽掉,可以通过super调用父类的成员解决屏蔽问题。
代码示例如下:
package oneHundredDayPlan.twoDay;
public class Five {
String name = "乐悠小码";
public void test(){
System.out.println("父类中的test方法");
}
}
package oneHundredDayPlan.twoDay;
public class TestFive extends Five {
String name = "乐悠小码的子类";
public void test(){
System.out.println("子类中的test方法");
}
public void method(){
System.out.println(super.name);
super.test();
System.out.println("----------------------------");
System.out.println(name);
test();
}
public static void main(String[] args) {
TestFive t = new TestFive();
t.method();
}
}

注:静态方法中不能使用this和super关键字:
· 由于静态方法不属于任何一个具体的对象,而this代表的是当前对象的引用,在静态方法中没有一个特定的对象可以被引用,所以不能使用this关键字。如果在静态方法中使用this,会导致编译错误,因为编译器无法确定this所指代的具体对象。
·同样,因为静态方法是属于类的方法,与特定的对象实例无关。而super关键字通常用于在对象层次结构中,通过子类对象访问父类的成员。在静态方法中,没有对象实例的概念,无法确定要访问哪个父类对象的成员,所以不能使用super关键字。

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



