让我们先从一个简单的例子来开始对类的研究。下面定义了一个名为box的类,它定义了3个实例变量:width,height和depth。当前,box类不包含任何方法(但是随后将增加一些)。

class Box { double width; double height; double depth;
}

前面已经说过,一个类定义一个新的数据类型。在本例中,新的数据类型名为Box。
你可以使用这个名字来声明Box类型的对象。记住类声明只是创建一个模板(或类型描述),它并不会创建一个实际的对象。因此,上述代码不会生成任何Box类型的对象实体。
要真正创建一个Box对象,你必须使用下面的语句:

Box mybox = new Box(); // create a Box object called mybo

这个语句执行后,mybox就是Box的一个实例了。因此,它将具有“物理的”真实性。现在,先不必考虑这个语句的一些细节问题。

每次你创建类的一个实例时,你是在创建一个对象,该对象包含它自己的由类定义的每个实例变量的拷贝。因此,每个Box对象都将包含它自己的实例变量拷贝,这些变量即width,height,和 depth。要访问这些变量,你要使用点号“.”运算符。点号运算符(dot operator)将对象名和成员名连接起来。例如,要将mybox的width变量赋值为100,使用下面的语句:

mybox.width = 100;

该语句告诉编译器对mybox对象内包含的width变量拷贝的值赋为100。通常情况下,你可以使用点号运算符来访问一个对象内的实例变量和方法。
下面是使用Box类的完整程序:

/* A program that uses the Box class. Call this file BoxDemo.java
*/
class Box { double width; double height; double depth;
}
// This class declares an object of type Box.
class BoxDemo { public static void main(String args[]) {
Box mybox = new Box();
double vol;
// assign values to mybox's instance variables
mybox.width = 10;
mybox.height = 20;
mybox.depth = 15;
// compute volume of box
vol = mybox.width * mybox.height * mybox.depth;
System.out.println("Volume is " + vol); }
}

你应该把包含该程序的的文件命名为BoxDemo.java,因为main( )方法在名为 BoxDemo 的类中,而不是名为Box的类中。当你编译这个程序时,你会发现生成了两个“.class”文件,一个属于box,另一个属于BoxDemo。Java编译器自动将每个类保存在它自己的“ .class ”文件中。没有必要分别将Box类和Boxdemo类放在同一个源文件中。你可以分别将它们放在各自的文件中,并分别命名为Box.Java和 BoxDemo.java。
要运行这个程序,你必须执行BoxDemo.class。运行该程序后,你会看见如下输出:

Volume is 3000.0

前面已经讲过,每个对象都含有它自己的、由它的类定义的实例变量的拷贝。因此,假设你有两个Box对象,每个对象都有其自己的depth,width和height拷贝。改变一个对象的实例变量对另外一个对象的实例变量没有任何影响,理解这一点是很重要的。例如,下面的程序定义了两个Box对象:

// This program declares two Box objects.
class Box { double width; double height;double depth;
}
class BoxDemo2 {
public static void main(String args[]) {
Box mybox1 = new Box();
Box mybox2 = new Box();
double vol;
// assign values to mybox1's instance variables
mybox1.width = 10;
mybox1.height = 20;
mybox1.depth = 15;
/* assign different values to mybox2's instance variables */
mybox2.width = 3;
mybox2.height = 6;
mybox2.depth = 9;
// compute volume of first box
vol = mybox1.width * mybox1.height * mybox1.depth;
System.out.println("Volume is " + vol);
// compute volume of second box
vol = mybox2.width * mybox2.height * mybox2.depth;
System.out.println("Volume is " + vol); }
}

该程序产生的输出如下所示:

Volume is 3000.0
Volume is 162.0

你可以看到,mybox1的数据与mybox2的数据完全分离。

Java基础篇:一个简单的类相关推荐

  1. Java基础 创建一个账户Account类,该类有id:账户号码(长整数),password:账户密码,name:真实姓名

    题目: 创建一个账户Account类,该类有id:账户号码(长整数),password:账户密码,name:真实姓名,personId:身份证号码 字符串类型,email:客户的电子邮箱,balanc ...

  2. Java基础篇:为Box类添加一个方法

    尽管创建一个仅包含数据的类是相当不错的事情,但这样的情况很少发生.大部分情况是你将使用方法存取由类定义的实例变量. 事实上,方法定义大多数类的接口.这允许类实现函数可以把内部数据结构的特定布局隐蔽到方 ...

  3. Java基础篇:简单数据类型

    Java定义了8个简单(或基本)的数据类型:字节型(byte),短整型(short),整型(int),长整型(long),字符型(char),浮点型(float),双精度型(double),布尔型(b ...

  4. Java基础篇之什么是类集?

    Java的类集框架使你的程序处理对象组的方法标准化.在Java 2出现之前,Java提供了一些专门的类如Dictionary,Vector,Stack和Properties去存储和操作对象组.尽管这些 ...

  5. Java基础篇:介绍嵌套类和内部类

    在另一个类中定义的类就是嵌套类(nested classes).嵌套类的范围由装入它的类的范围限制.这样,如果类B被定义在类A之内,那么B为A所知,然而不被A的外面所知. 嵌套类可以访问嵌套它的类的成 ...

  6. 使用java基础完成一个简单的控制台输入的用户管理(包括用户注册,登录,修改密码,及一些相关校验)

    要求 实体类 //该类为用户对象的实体类 public class User {     private String name;     private String password;     p ...

  7. Java基础篇:简单介绍一下final

    一个变量可以声明为final,这样做的目的是阻止它的内容被修改.这意味着在声明final变量的时候,你必须初始化它(在这种用法上,final类似于C/C++中的const).例如: final int ...

  8. 鸟哥的Linux私房菜(基础篇)- 一个简单的 SPFdisk 分割实例

    一個簡單的 SPFdisk分割實例 最近更新日期:2005/06/12 磁碟分割是個很重要的學習知識!尤其是在您原本的硬碟空間不足了,或者是新增硬碟了,或者是為了增加磁碟效能而必須要規劃出比較適當大小 ...

  9. Java基础篇——类与子类

    1. 什么是类,什么是子类? 类:类是Java程序的基本要素,一个Java应用程序就是由若干个类所构成的.类是Java语言中最重要的"数据类型". 子类:由继承得到的类叫子类. 引 ...

  10. java写一个外网访问的接口_【JAVA基础】一个案例搞懂类、对象、重载、封装、继承、多态、覆盖、抽象和接口概念及区别(中篇)...

    0 前言 初学JAVA时,总会对一些概念一知半解,相互混淆,不明其设计的用意,如类.对象.重载.封装.继承.多态.覆盖.抽象类.接口概念.为便于理解和巩固,本文将基于一个案例及其变形,展现各个概念的定 ...

最新文章

  1. ubuntu mysql 改密码_tpcc-mysql 压力测试
  2. 【XXX贷】2014年10月XX日发标预告
  3. Windows安装配置tidevice
  4. 渗透知识-SQL注入
  5. LNMP一键安装脚本(第二版)
  6. 2017蓝桥杯省赛---java---B---2(纸牌三角形)
  7. angular封装富文本编辑器指令
  8. ajax post 提交无法进入controller 请求200
  9. bzoj1180: [CROATIAN2009]OTOCI
  10. 数据库中union和union all的区别
  11. 如何在windows 2008 server 新建用户
  12. PMP第十一章:项目风险管理
  13. v-distpicker 直辖市的修改
  14. 英语问题,(有些答案不对,不对的请说一声)
  15. Flutter问题记录 - Unable to find bundled Java version
  16. p值 统计学意义_什么是统计意义? P值定义以及如何计算
  17. TreeATE自动化测试平台简介
  18. 使用Git克隆vue-element-admin项目报错的解决方案
  19. 结课作业:机械设计制造及其自动化文献综述
  20. 你看到的好片子,原来藏着这么多黑科技……

热门文章

  1. 高速串行总线走线难点在哪?重要线信号的处理经验分享
  2. 关于这个错误的不明原因的解决之道
  3. 并发入库面临重复数据的问题
  4. oracle中循环读出一个表的信息插入到另外一个表中
  5. java并发:线程同步机制之计数器Exechanger
  6. LoadRunner函数中文翻译
  7. python---之np.prod() 函数计算数组元素乘积等
  8. 虚拟服务器的密码忘记了,忘记虚拟密码
  9. ubuntu安装python3.6_Ubuntu16.04下安装python3.6.4详细步骤
  10. char转化为cstring_C语言100题集合001-将一个数字字符串转换为一个整数