国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Java面向?qū)ο笾小澳涿麑ο蟆钡氖褂?/h1>

這篇具有很好參考價值的文章主要介紹了Java面向?qū)ο笾小澳涿麑ο蟆钡氖褂?。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

1.0 匿名對象的基本知識

  • 匿名對象
    顧名思義,匿名對象指的就是沒有名字的對象,在使用中理解為實例化一個類對象,但是并不把它賦給一個對應(yīng)的類變量,而是直接使用。在理解匿名對象前,我們先創(chuàng)建一個類便于后面的使用。
  • 匿名對象具有以下特征:
    語法上:只創(chuàng)建對象,但不用變量來接收,例如:假設(shè)現(xiàn)在Student類如上所示,通常情況我們在使用這個類時需要先實例化類對象,然后調(diào)用類的屬性和方法
  • 匿名對象的使用:
    匿名對象本質(zhì)上仍然是一個對象,所以它具備對象的所有功能
    每次創(chuàng)建一個匿名對象都是一起全新的對象,即每次創(chuàng)建的匿名對象都是不同的對象,它們在堆內(nèi)存中具有不同的地址。而且一個匿名對象只能使用一次。

缺點:
一個匿名對象只能使用一次,造成內(nèi)存空間的浪費。

優(yōu)點:
由于匿名對象不需要在實例化后賦給變量,因此當大量需要使用匿名對象時,可以節(jié)省保存變量所需的??臻g
JVM的垃圾回收會根據(jù)對象是否可達來判斷是否為垃圾,如果不可達,則在下一次的垃圾回收中進行回收。而匿名對象創(chuàng)建后只能使用一次,當使用結(jié)束后它就是垃圾了,這樣便于JVM快速回收,節(jié)省堆內(nèi)存空間。

2.0 通過實驗代碼進行匿名對象的學(xué)習

2.1

寫一個名為Account的類模擬賬戶。該類的屬性和方法如下圖所示。

該類包括的屬性:賬號id,余額balance,年利率annualInterestRate;

包含的方法:訪問器方法(getter和setter方法),取款方法withdraw(),存款方法deposit()。

Java面向?qū)ο笾小澳涿麑ο蟆钡氖褂? referrerpolicy=

2.2

創(chuàng)建Customer類。
Java面向?qū)ο笾小澳涿麑ο蟆钡氖褂? referrerpolicy=
a. 聲明三個私有對象屬性:firstName、lastName和account。
b. 聲明一個公有構(gòu)造器,這個構(gòu)造器帶有兩個代表對象屬性的參數(shù)(f和l)
c. 聲明兩個公有存取器來訪問該對象屬性,方法getFirstName和getLastName返回相應(yīng)的屬性。
d. 聲明setAccount 方法來對account屬性賦值。
e. 聲明getAccount 方法以獲取account屬性。

2.3

寫一個測試程序。
(1)
創(chuàng)建一個Customer ,名字叫 Jane Smith, 他有一個賬號為1000,余額為2000元,年利率為 1.23% 的賬戶。
(2)
對Jane Smith操作。
存入 100 元,再取出960元。再取出2000元。
打印出Jane Smith 的基本信息
Java面向?qū)ο笾小澳涿麑ο蟆钡氖褂? referrerpolicy=

3.0 代碼實現(xiàn)

3.1 Account.java

package classTest.Account;

// 虛擬賬戶練習
public class Account {
    private int id; //賬號
    private double balance; //余額
    private double Rate; //年利率

    public Account(int i, double b, double a){
        id = i;
        balance = b;
        Rate = a;
    }

    public int getId() {
        return id;
    }

    public double getBalance() {
        return balance;
    }

    public double getRate() {
        return Rate;
    }

    public void setId(int id) {
        this.id = id;
    }

    public void setBalance(double balance) {
        this.balance = balance;
    }

    public void setRate(double rate) {
        Rate = rate;
    }

    public void withdraw(double amount){ //取錢
        if(amount <= 0){
            System.out.println("輸入金額不合法");
        }
        else if(amount > balance){
            System.out.println("余額不足");
        }
        else {
            System.out.println("取錢成功: " + amount);
            balance -= amount;
        }
    }

    public void deposit(double amount){ //存錢
        if(amount > 0){
            balance += amount;
            System.out.println("成功存入:" + amount);
        }
        else{
            System.out.println("數(shù)據(jù)不合法");
        }

    }
}

3.2 Customer.java

package classTest.Account;

public class Customer {
    private String firstName;
    private String lastName;
    private Account account;

    public Customer(String f, String l){
        firstName = f;
        lastName = l;
    }

    public String getFirstName() {
        return firstName;
    }

    public String getLastName() {
        return lastName;
    }

    public Account getAccount() {
        return account;
    }

    public void setFirstName(String firstName) {
        this.firstName = firstName;
    }

    public void setLastName(String lastName) {
        this.lastName = lastName;
    }

    public void setAccount(Account account) {
        this.account = account;
    }
}

3.3 測試程序CustomerTest.java

package classTest.Account;

import java.util.concurrent.CountDownLatch;

public class AccountTest {
    public static void main(String[] args) {
        // Customer實例
        Customer cus = new Customer("Jane", "Smith");
        // Account實例
        Account ac = new Account(1000, 2000, 0.0123);

        // 客戶和賬戶取得聯(lián)系
        cus.setAccount(ac);

//        cus.setAccount(new Account(1000, 2000, 0.0123)); // 也可以直接這樣寫 -> 匿名對象

//        ac.deposit(100);
//        ac.withdraw(960);
//        ac.withdraw(2000);

        cus.getAccount().deposit(100);
        cus.getAccount().withdraw(960);
        cus.getAccount().withdraw(2000);

        System.out.println(cus.getFirstName() + " " + cus.getLastName() + " has a account id: " + ac.getId() + ", annualInterestRate is " + ac.getRate() + ", balance is " + ac.getBalance());

    }
}

4.0總結(jié)

可以看出可以直接使用

cus.setAccount(new Account(1000, 2000, 0.0123));

來進行匿名對象的定義文章來源地址http://www.zghlxwxcb.cn/news/detail-453304.html

  • 1.匿名對象只能使用一次
  • 2.匿名對象往往作為形參傳遞給方法的實參

到了這里,關(guān)于Java面向?qū)ο笾小澳涿麑ο蟆钡氖褂玫奈恼戮徒榻B完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包