理解Java自定义类作为数据类型——引用数据类型
目录
说在前面的话
复现问题
引用数据类型的理解
总结
说在前面的话
前言:Java的数据类型按照类型可分为基本数据类型(byte、short、int、long、double、float、char、boolean)和引用数据类型(类(class)、接口(interface)、数组(array)),8种基本数据类型相信只要接触过Java就比较熟悉。而对于引用数据类型相对来说比较陌生,下边会对引用数据类型中的类(class)做一个比较浅显的介绍,这也是由于我自己在学习的过程中碰见了问题,难以理解之后查阅了相关资料稍微理解了一点儿,希望能学习过程中不理解这块的同道中人提供一些可借鉴的地方!!!
复现问题
下面是我写的两个类,描述问题:可以看到类B的第二个属性被定义为private A a;显然是用了第一个自定义的类 作为数据类型,当我看到这一步我有点儿懵了,经过网上阅读博客借鉴加上自身理解,故有此篇博文!
public class A {
private int age;
private String name;
……
}
public class B {
private int score;
private A a;
……
}
引用数据类型的理解
引用类型指向一个对象,不是原始值,指向对象的变量是引用变量,那么引用数据类型相较于基本数据类型,与基本数据类型有哪些区别或是特性?我们不妨可以通过一个客户存钱与取钱的例子进行解释:
Accout类:定义了账号、余额私有属性,定义构造方法对属性进行赋值的同时提供了对应的get/set方法。此外提供取款withdraw()方法以及存款deposit()方法进行相关操作。
public class Account {
private int id;//账号
private double balance;//余额
public Account(int id, double balance) {//构造方法
this.id = id;
this.balance = balance;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public double getBalance() {
return balance;
}
public void setBalance(double balance) {
this.balance = balance;
}
public void withdraw(double amount) {//取款
if (balance >= amount) {
balance -= amount;
System.out.println("取款成功:" + amount + "元," + "账户余额为:" + this.getBalance() + "元");
} else {
System.out.println("取款失败");
}
}
public void deposit(double amount) {//存款
if(amount > 0) {
balance += amount;
System.out.println("存款成功:" + amount + "元," + "账户余额为:" + this.getBalance() + "元");
} else {
System.out.println("存款失败");
}
}
}
Customer类:定义了name私有属性,使用Java自定义类Account作为属性数据类型(重复上文提到的:引用类型指向一个对象,不是原始值,指向对象的变量是引用变量),是否可以理解为Customer类中属性是包含Account类的,private Account account是否可以说是定义了Account类的一个对象,正如灯管和灯泡,灯管中必定是包含着灯泡的。
public class Customer {
private String name;//姓名
private Account account;//账单,引用数据类型,与String类型进行比较,String[] string = new String[10];
public Customer(String name) {//构造方法
this.name = name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Account getAccount() {
return account;
}
public void setAccount(Account account) {
this.account = account;
}
}
CustomerTest类:测试类,我们先定义了Customer类的一个对象并通过构造方法赋值,接着定义了Account类的一个对象并赋值,比较重要的一步是如何将账户信息与客户之间建立联系,我们在Customer类中提供了account属性的set方法,可以将我们定义的Account类的对象作为参数调用Customer类对象的setAccoount()方法,这样我们就使得客户有了自己的账户信息,这也就是类作为引用数据类型的一个作用。
public class CustomerTest {
public static void main(String[] args) {
Customer customer = new Customer("haitao");//创建用户对象customer
Account account = new Account(1000, 2020);//创建账单对象
customer.setAccount(account);//实现客户与账单的联系
System.out.println("当前客户ID:" + account.getId() + ",账户余额为:"+ account.getBalance() + "元");
System.out.println("**********************************");
customer.getAccount().deposit(100);//存款
customer.getAccount().withdraw(960);//取款
}
}
在eclipse中运行程序,我们将会看到以下的结果:
总结
我们可以看到Java自定义类作为数据类型的一个作用,可以使得两个类之间能够建立起联系,博文只是简单的从表面上进行了类作为引用数据类型的一些介绍,并没有进行更加深入细致的详解,毕竟我本人也就是一个初学者,自己的理解也没有大牛那么深刻,可能在一些细节的表述有出入不恰当,欢迎大家指正共同进步,希望对大家有所帮助!
原文地址: https://blog.csdn.net/qq_43603138/article/details/103930751
本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
相关文章