第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定

JAVA類屬性初始化的有趣兒情況

標(biāo)簽:
Java MySQL Android

这是我之前遇到的一个问题,在这里分享给同僚;希望大家能避免这些错误;少走弯路。

问题

这个情况有些特殊,当时我在弄APP的设置模块;结果发现无论设置如何保存第二次获取值的时候都是初始值,跟踪了一下发现保存的时候的确是保存到文件了,那么这就奇葩了。想了一下问题肯定出在获取值的时候,跟踪了一下获取值的断点,发现获取的时候是之前保存的值,而在类的构造函数之后值却又成了初始值,这个是为啥?

百思不得其姐啊~~~

我喜欢直接一点,来看看代码是怎么回事儿。

代码
package net.qiujuer;

public abstract class People {
    public People() {
        initValue();
    }

    public abstract void initValue();

    public void show() {
        System.out.printf("Show:" + toString());
    }
}

一个父类,在构造函数中调用初始化方法。

package net.qiujuer;

public class Man extends People {
    private String mName = "聂小倩";
    private int mAge = 18;

    @Override
    public void initValue() {
        mName = "Qiujuer";
        mAge = 23;
    }

    @Override
    public String toString() {
        return "Name:" + (mName == null ? "NULL" : mName) + " Age:" + mAge + "\n";
    }
}

实现类,实现其具体的初始化方法,并在该方法中做一些属性操作。

package net.qiujuer;

public class MainClass {
    public static void main(String[] args) {
        Man man = new Man();
        man.show();
    }
}

测试类,在该类中直接 new 并调用方法。
结果是什么呢?

有谁能猜到?

其输出为:

Show:Name:聂小倩 Age:18

怎么样?有想到的么?为什么会这样呢?自己试试看看是不是。

变更

我们输出一些详细的地方。

首先更改父类的构造函数:

    public People() {
        System.out.printf("People-1:" + toString());
        initValue();
        System.out.printf("People-2:" + toString());
    }

然后更改 Man 的构造函数:

    public Man() {
        super();
        System.out.printf("Man:" + toString());
    }

再来运行看看~~

想想一下结果是什么呢?

先想一下,然后再看估计有些用处。

算了,还是直接进入吧~

结果输出:

People-1:Name:NULL Age:0
People-2:Name:Qiujuer Age:23
Man:Name:聂小倩 Age:18
Show:Name:聂小倩 Age:18

想到了么?

结论

我想到了这些:

  • 在类属性初始化的时候,其直接赋值的默认值将会在父类的构造函数之后进行。
  • 在父类操作的时候,其子类的属性并不具备值:mName 属性为 NULL
  • 在父类中可以通过方法对实现类的属性进行赋值操作,但是当其实现类中默认有对值进行赋值的话,那么将会自动进行二次赋值。

一个无心之举,或许会造成一个天大的BUG;且用且珍惜~

點(diǎn)擊查看更多內(nèi)容
34人點(diǎn)贊

若覺得本文不錯(cuò),就分享一下吧!

評(píng)論

作者其他優(yōu)質(zhì)文章

正在加載中
移動(dòng)開發(fā)工程師
手記
粉絲
1.8萬
獲贊與收藏
774

關(guān)注作者,訂閱最新文章

閱讀免費(fèi)教程

感謝您的支持,我會(huì)繼續(xù)努力的~
掃碼打賞,你說多少就多少
贊賞金額會(huì)直接到老師賬戶
支付方式
打開微信掃一掃,即可進(jìn)行掃碼打賞哦
今天注冊(cè)有機(jī)會(huì)得

100積分直接送

付費(fèi)專欄免費(fèi)學(xué)

大額優(yōu)惠券免費(fèi)領(lǐng)

立即參與 放棄機(jī)會(huì)
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)

舉報(bào)

0/150
提交
取消