您的位置:首页 > 编程语言 > Java开发

1.java中super关键字的应用

2020-04-05 07:24 627 查看

super对于构造方法的使用

package com.awaycode;

public class Student  extends Person{

Student(){
super();
//super(12);
};

}
package com.awaycode;

public class Person {

int  age = 10;
Person(){
System.out.println("父类~~~~的无参数构造方法被使用");
};
Person(int age)
{
this.age=age;
System.out.println("父类~~~~的有参方法被调用");
};

}

在java里面,子类继承父类,子类在创建的时候就会调用父类的构造方法;

把student的构造方法中的 super(); super(12); 这两条全部 注释掉 也会打印,如下图所示


只注释掉super(12),打印结果和上图一样,说明在子类默认调用了父类的无参构造方法

把super(),注释掉保留 super(12),打印结果如下图所示

调用父类的构造方法的确会改变,子类中的变量值

但是如果 改为

package com.awaycode;

public class Student  extends Person{

int age = 19; //多加这一句,就会发现运行结果 ,变成了19
Student(){
//super();
super(12);
};

}


这说明在子类继承父类的时候 如果重写变量,那么重写优先级比super.父类构造函数高,
如果在后方进行修改


打印的结果

验证出结论只要子类重写了父类的变量值,super方法无法改变子类的值!!!!

在没有重写 age的情况下(就是在子类中不进行int age) 可以在super 在构造函数 普通函数中都可以改变!!!!

super调用父类的一些方法

ppackage com.awaycode;

public class Person {

int  age = 10;
Person(){
System.out.println("父类~~~~的无参数构造方法被使用");
};
Person(int age)
{
this.age=age;
System.out.println("父类~~~~的有参方法被调用");
};

public  void   flfnc()
{

System.out.println("我是父类的flfnc方法");
System.out.println(age);

}

}
package com.awaycode;

public class Student  extends Person{
int age = 18;

Student(){
super(15);
super.flfnc();
System.out.print("在student中");
System.out.println(this.age);

};

}

在注释掉sper(15) 打印的内容为


在不注释掉sper(15)打印的内容为

由此可见子类调用父类的super方法

  • 点赞
  • 收藏
  • 分享
  • 文章举报
cs温柔 发布了12 篇原创文章 · 获赞 0 · 访问量 321 私信 关注
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: