ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

Java类与对象的基本概念(二)

2021-12-16 23:30:27  阅读:207  来源: 互联网

标签:BankAccount account Java ba 对象 public 枚举 toString 基本概念


文章目录


枚举类型

当需要一个有限集合,而有限集合中的数据为特定的值时,可以使用枚举类型。枚举类型的定义使用关键字enum,其语法格式如下:

[public] enum 枚举类型名称 [implements接口名称列表]
{
	枚举值;
	变量成员声明及初始化;
	方法声明及方法体;
}
enum Score{
    EXCELLENT,
    QUAILFIED,
    FAILED;
};
public class ScoreTester {
    public static void main(String [] args){
        giveScore(Score.EXCELLENT);
    }
    public static void giveScore(Score s){
        switch (s){
            case EXCELLENT:
                System.out.println("EXCELLENT");
                break;
            case QUAILFIED:
                System.out.println("QUAILFIED");
                break;
            case FAILED:
                System.out.println("FAILED");
                break;
        }
    }
}

枚举类型具有如下特点:
1)枚举类型是类,而不是简单的整数类型,枚举值是类的对象;
2)枚举类型继承过java.lang.Enum类;
3)枚举类型没有public的构造函数;
4)枚举值是public、static、final的。

枚举类型有很多默认方法。
枚举类型相当于定义一个类,因此可以给该类定义数据和方法。
此外,枚举类型可以定义构造函数,不过为了防止程序员自行定义枚举类型的对象,枚举类型的构造函数只能是private的,并且默认是private的。

应用举例

首先声明银行账号类,包括状态、构造方法、get方法及set方法。

enum Grade{//定义枚举类型,表示账户的等级。
    VIP,
    General;
}
public class BankAccount {
    private String ownerName;
    private int accountNumber;
    private float balance;
    Grade grade;
    public BankAccount(){
        this("",0,0,Grade.General);
    }
    public BankAccount(String initName,int initAccNum,float initBal,Grade g){
        ownerName=initName;
        accountNumber=initAccNum;
        balance=initBal;
        grade=g;
    }
    public String getOwnerName(){
        return ownerName;
    }
    public int getAccountNumber(){
        return accountNumber;
    }
    public float getBalance(){
        return balance;
    }
    public Grade getGrade(){
        return grade;
    }
    public void setOwnerName(String newName){
        ownerName=newName;
    }

    public void setAccountNumber(int newNum) {
        accountNumber = newNum;
    }
    public void setBalance(float newBalance){
        balance=newBalance;
    }
    public void setGrade(Grade g){
        grade=g;
    }
}

声明测试类:

public class AccountTester {
    public static void main(String args[]){
        BankAccount anAccount;
        anAccount=new BankAccount("zhangsan",10000,0,Grade.General);
        anAccount.setBalance(anAccount.getBalance()+100);
        System.out.println("here is the account:"+anAccount);
        System.out.println("account name:"+anAccount.getOwnerName());
        System.out.println("account number"+anAccount.getAccountNumber());
        System.out.println("Balance: $"+anAccount.getBalance());
        System.out.println("Grade:"+anAccount.grade);
    }
}
输出结果:
here is the account:BankAccount@75b84c92
account name:zhangsan
account number10000
Balance: $100.0
Grade:General

声明toString()方法

当需要将一个独享输出到显示器时,通常需要调用它的toString()方法,将对象的内容转为字符串。Java的所有类都有一个默认的toString()方法,如果需要特殊的转换功能,则需要自己重写toString()方法。

系统默认的toString()的方法体如下;

getClass().getName()+'@'+Integer.toHexString(hashCode())

在实际应用中,往往需要此方法能够返回更有意义的信息。这就需要我们重写自己的toString()方法,其主要功能是用一个字符串来描述一个对象的主要信息。
在BankAccount中加入toString()方法。

public String toString(){
        return (grade+"account #"+accountNumber+"with balance $"+balance);
    }
System.out.println("here is the account:"+anAccount.toString());

然后重新编译运行测试类;

输出:
here is the account:Generalaccount #10000with balance $100.0
account name:zhangsan
account number10000
Balance: $100.0
Grade:General

在声明toString()方法时,需要注意以下几点:
1)toString()方法必须被声明为public;
2)返回类型为String;
3)方法的名称必须为toString,且没有参数;
4)在方法体中不要使用输出方法System.out.println()。

格式化字符串输出

在toString()方法中使用DecimalFormat类的实例方法format对数据进行格式化。DecimalFormat类在java.text方法中。

public String toString(){
        return (grade+"account #"+accountNumber+"with balance"+new java.text.DecimalFormat("$0.00f").format(balance));
    }

另外一种格式化输出字符串的方法,是使用printf。
输出两位小数并加上$符号。

System.out.printf("$%.2f",anAccount.getBalance());

声明类方法生成特殊的实例

	public static BankAccount example(){
        BankAccount ba=new BankAccount();
        ba.setOwnerName("zhangwei");
        ba.setAccountNumber(5000);
        return ba;
    }
    public static BankAccount example1(){
        BankAccount ba=new BankAccount();
        ba.setOwnerName("wanger");
        ba.setAccountNumber(2000);
        ba.deposit(1000);
        return ba;
    }
    public static BankAccount example2(){
        BankAccount ba=new BankAccount();
        ba.setOwnerName("mazi");
        ba.setAccountNumber(3000);
        ba.deposit(2000);
        return ba;
    }

声明存钱取钱的方法;

	public float deposit(float anAmount){
        balance+=anAmount;
        return (balance);
    }
    public float withdraw(float anAmount){
        balance-=anAmount;
        return (anAmount);
    }

标签:BankAccount,account,Java,ba,对象,public,枚举,toString,基本概念
来源: https://blog.csdn.net/suwuzs/article/details/121976836

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有