观心静

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

           如果你了解,用this是调用一个类里面的变量或者对象方法。那么super你可以理解为调用多态或者继承类中的构造方法和对象方法。在super调用构造方法时,只能调用带参的构造方法,这也是唯一调用其他类里面的构造方法的显性调用。不带参的父类构造方法可以在执行实例化子类时直接被隐性调用。

例子1:

class cam0  
{  
    double size=10;  
    void printsize()  
    {  
        System.out.println(size);  
    }  
}  
class cam1 extends cam0  
{  
    double size=20;  
    void printsize()  
    {  
        System.out.println(size);  
        System.out.println(super.size);  
        super.printsize();  
    }  
}  
public class cam2  
{  
    public static void main(String args[])  
    {  
        cam1 m=new cam1();  
        m.printsize();  
    }  
}  
结果:

输出为

20.0

10.0

10.0

super调用m的父类cam0的成员和方法


super可以调用当前对象的父类对象的构造函数

注意: 子类调用父类的构造方法时,super语句必须是子类构造方法的第一句


例子2:

[java] view plain copy 
class cam0  
{  
    public cam0(int a,int b)  
    {  
        System.out.println("CS");  
    }  
}  
class cam1 extends cam0  
{  
    public cam1()  
    {  
        super(1,1);  
        System.out.println("bbb");  
    }  
    public cam1(int a)  
    {  
        super(1,1);  
        System.out.println("ccc");  
    }  
}  
public class cam2  
{  
    public static void main(String args[])  
    {  
        cam1 a=new cam1();  
        cam1 b=new cam1(1);  
    }  
}  

输出为

CS

bbb

CS

ccc

对象a,b分别调用了父类cam0的构造函数

 

super可以把当前对象的父类对象的引用作为参数传递给其他方法

这个用法和this把当前对象的引用作为参数传递给其他方法相似,这里就不赘述了




posted on 2017-08-03 11:41  观心静  阅读(657)  评论(0编辑  收藏  举报