super关键字
什么时候用super
子类和父类都有相同的属性和方法,如果子类和父类都有name属性,那么要想在子类中访问父类的name则需要用super什么地方使用super
- super可用在成员方法中,不能用在静态方法中,因为super不是引用类型(this是),访问静态方法时没有对象,无对象自然无法访问相应的属性和方法
super可放在构造方法中
语法:super(实参)
作用:1.通过子类的构造方法去调用父类的构造方法. 2.代码复用
语法规则: 如果构造方法第一行没有this(…),也没显示的去调用super(…),系统会默认调用super(…)
注:super(…)的调用只能放在构造函数的第一行且super和this不能共存
super(…)调用了父类的构造方法,但不会创建父类对象,只是给当前子类对象中的父类型特征赋值
public class A {
String name;
String age;
public A(){}
public A(String name,String age){
this.name=name;
this.age=age;
}
public void test(){
System.out.println("这是A的test方法");
}
}
public class B extends A{
String sex;//特有属性
public B(){
//默认会调用super()
}
public B(String name,String age,String sex){
super(name,age);//通过子类构造方法调用父类的构造方法
this.sex=sex;//特有的
}
public void test(){
System.out.println("这是B的test方法");
super.test();//调用父类的test方法
}
//在java语言,只要是创建java对象,那么object中的无参构造方法一定会执行
//构造方法执行不一定会创建对象.因为super()也算构造方法
//父类构造方法不会被子类继承,但是会被子类调用
}
public class SuperTest {
public static void main(String[] args){
B b=new B("chen","23","男");
b.test();
}
}