A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© xtf 中级黑马   /  2015-6-8 11:08  /  782 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

Java继承中super的用法是什么?

6 个回复

倒序浏览
调用父类的构造函数
回复 使用道具 举报
super只有在有父子关系的类中出现,且出现在子类,用于调用父类的方法,如果super后面直接跟括号表名调用的是父类的构造方法,括号里面的参数去匹配父类的同形式参数,且出现在构造器中,其他时候我们可以直接super.调用父类中的方法。
回复 使用道具 举报
super代表父类,一般用于调用父类已经定义好的方法
回复 使用道具 举报
super( )调用父类中与之对应的构造函数
回复 使用道具 举报
1.用于调用超类的构造函数;

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

例:使用super调用超类的构造函数

矩形实体代码:

[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成员变量。

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);  
        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调用被子类隐藏的方法。

ps:可以参见继承中的方法重写。
回复 使用道具 举报
super指代的是父类对象,this指代的是子类对象,super.成员属性是调用父类成员,super()调用父类无参构造函数,括号内加入参数,调用有参数的构造函数。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马