当前位置 > 主页 > 万和大讲堂 >


Java继承中super关键字

2015-12-10 15:49

  super关键字的两种用法:

 

  1.用于调用超类的构造函数;

 

  2.用于访问超类中被子类的某个成员隐藏的成员;

 

  例:使用super调用超类的构造函数南京Java培训

 

  矩形实体代码:

 

  [Java]

 

  public class Rectangular {

 

  private double width;

 

  private double height;

 

  Rectangular(double w,double h){

 

  width=w;

 

  height=h;

 

  }

 

  public double area(){

 

  return width*height;

 

  }

 

  }

 

  矩形子类RectangularArea代码:

 

  [Java]

 

  public class RectangularArea extends Rectangular{

 

  public RectangularArea(double w,double h) {

 

  super(w,h);

 

  }

 

  }

 

  测试类DemoSuper代码:

 

  [Java]

 

  public class DemoSuper {

 

  public static void main(String[] args) {

 

  // TODO Auto-generated method stub

 

  RectangularArea myboxBoxWeight=new RectangularArea(10, 20);

 

  System.out.println("矩形的面积为:"+myboxBoxWeight.area());

 

  }

 

  }

 

  实验结果:

 

  由实验结果我们可知:使用super()成功的调用了父类Rectangular的构造方法,并调用了计算面积的方法area(),间接使用了父类中private成员变量。南京Java培训

 

  ps:父类中的private成员变量还是不能被子类直接调用的,只是通过public方法间接使用了。

 

  例:访问超类中被子类成员隐藏的成员

 

  上面的这句话听起来很是绕口,所以我们通过实例来学习。

 

  父类代码:

 

  [Java]

 

  public class A {

 

  int i;

 

  }

 

  子类代码:

 

  [Java]

 

  public class B extends A{

 

  int i;

 

  B(int a,int b){

 

  super.i=a;

 

  i=b;

 

  }

 

  void show(){

 

  System.out.println("i in superclass:"+super.i); 南京Java培训

 

  System.out.println("i in subclass:"+i);

 

  }

 

  }

 

  测试类DemoSuper:

 

  [Java]

 

  public class DemoSuper {

 

  public static void main(String[] args) {

 

  // TODO Auto-generated method stub

 

  B b=new B(1,2);

 

  b.show();

 

  }

 

  }

 

  实验结果:

 

  尽管类B中的实例变量i隐藏了类A中的实例变量i,但是使用super可以访问在超类中定义的实例变量i。当然也可以使用super调用被子类隐藏的方法。南京Java培训

 

  ps:可以参见继承中的方法重写。


最近开班 more>
  • Web前端开发
  • 软件测试
  • 软件测试预科班
  • AI大模型+全栈开发开班
  • 云原生精英班
  • 云网预科班
  • 开发课程基础班第三期
  • 开发课程基础班第二期
  • 开发课程基础班第五期
  • Java全栈
  • CISP
  • HCIP-cloud
  • HCIE-Datacom(HCIA,HCIP基础)
  • HCIP-Datacom(HCIA基础)
  • HCIA-Datacom(0基础)
  • HCIE-Datacom(HCIA,HCIP基础)
  • HCIP-Datacom(HCIA基础)
  • HCIA-Datacom(0基础)
  • OCP 19C
  • RHCA
  • 6月9日
  • 5月21日
  • 5月14日
  • 6月9日
  • 5月7日
  • 5月26日
  • 5月19日
  • 5月12日
  • 6月3日
  • 6月9日
  • 随时开课
  • 7月12日
  • 5月19日
  • 5月19日
  • 5月7日
  • 5月10日
  • 5月24日
  • 5月24日
  • 随时开课
  • 随时开课
    • 姓 名 :
    • 电 话 :
    • 课 程 :

技术交流群

  • Java大数据交流群560819979加入
  • Python技术交流群595083299加入
  • Oracle技术交流群595119011加入
  • Web前端技术交流群604697610加入
  • Huawei技术交流群482919361加入
  • Redhat技术交流群587875348加入
  • UI设计技术交流群511649801加入
  • Cisco技术交流群596886705加入
  • IT运维技术交流群605888381加入