灵通163百科在线-实用的手机,证券免费资源网站

您现在的位置:首页 > K-JAVA资源 > JAVA软件工具 >

java子对象创建过程及多态

教程来源:www.lt163.com     点击数:     更新时间:2017-12-11 10:31

Java 创建子类对象的过程:
    public class F511
    {
    private int ff=100;
    protected  int m=880;
    F511()
    {
    m=add(8);
    }
    int add(int i){
    return i+m;
    }
    public static void main(String args[]){
    F511 f=new F511();
    System.out.println("f="+f.m);
    S511 s=new S511();
    System.out.println("s="+s.m+"  t= "+s.t);
    }
    }
    class S511 extends F511
    {
    protected int ss=111;
    S511(){
    m+=ss;
    t=add(9);
    }
    int add(int i){
    return i*ss;
    }
    }

大家自己先分析一下运算后的结果,然后在看下面结果:
    答案是:f=888
    m=111
    通过这个例子可以很好的学习到java继承父类,运行的先后顺序和机制。
    现在我添加一下东西到程序中,方便我们分析:
    public class F511
    {
    private int ff=100;
    protected  int m=880;
    protected int t=880;
    static int k=0;
    F511()
    {
    System.out.println("this is parents = "+m);
    m=add(8);
    System.out.println("this is parents m=add(8) = "+m);
    }
    int add(int i){
    System.out.println("k= "+k);
    k++;
    return i+m;
    }
    public static void main(String args[]){
    F511 f=new F511();
    System.out.println("f="+f.m);
    S511 s=new S511();
    System.out.println("s="+s.m+"  t= "+s.t);
    }
    }
    class S511 extends F511
    {
    protected int ss=111;
    static int j=0;
    S511(){
    System.out.println("this in childe print parents = "+m);
    m+=ss;
    t=add(9);
    }
    int add(int i){
    System.out.println("j= "+j);
    j++;
    System.out.println("ss= "+ss);
    return i*ss;
    }
    }
    运行结果是:
    this is parents = 880
    k= 0
    this is parents m=add(8) = 888
    f=888
    this is parents = 880
    j= 0
    ss= 0
    this is parents m=add(8) = 0
    this in childe print parents = 0
    j= 1
    ss= 111
    s=111  t= 999
    输出完成 (耗时 0 秒) - 正常终止
    从这里可以看出,子类继承父类后。在创建子类对象时,首先初始化父类的无参构造函数F511()执行其中的方法。由于父类无参构造方法中add()方法被子类重写了,因此父类调用子类的add()方法,这就是为什么会输出j=0,又由于父类中没有ss变量,所以ss默认就为0.所以父类初始化后,m=0了。然后才在初始化子类无参构造函数S511().由于m变成了0,所m+=ss,就为111了。这就是创建子类,函数初始化的过程。
    所以,在构造器中有应避免调用可能被改写的方法,不然上上面会出现某些意想不到的结果。

没有相关教程
UC浏览器 最先进实用的手机端浏览器,最大限度节省页面浏览流量,点击下载
老虎地图 绿色纯免费GPS定位省流量的最佳手机地图,点击下载
网秦手机安全系列 手机杀毒防盗,防火墙,构建手机安全,点击进入
塞班精品游戏 最流行最给力的塞班S60免签名名精品游戏合集,点击进入
阿里通 手机上轻松拨打网络电话和收发短信,高音质超省话费,资费标准
爱科手机电话 国内最好的手机网络电话领先品牌,价格低廉,点击查看
愤怒的小鸟2 全民挑战超流行休闲游戏力推新作-愤怒的小鸟2,点击查看
魔力旺旺 淘宝卖家首选的交易工具

资源下载排行
文章阅读排行