理解Java自定义类作为数据类型——引用数据类型

2021-04-08 00:00:00 理解 自定义 数据类型

目录

说在前面的话

复现问题

引用数据类型的理解

总结

 

  • 说在前面的话

前言: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自定义类作为数据类型——引用数据类型》

  • 总结

我们可以看到Java自定义类作为数据类型的一个作用,可以使得两个类之间能够建立起联系,博文只是简单的从表面上进行了类作为引用数据类型的一些介绍,并没有进行更加深入细致的详解,毕竟我本人也就是一个初学者,自己的理解也没有大牛那么深刻,可能在一些细节的表述有出入不恰当,欢迎大家指正共同进步,希望对大家有所帮助!

    原文作者:九流程序员ヾ
    原文地址: https://blog.csdn.net/qq_43603138/article/details/103930751
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。

相关文章