Java基础篇:一个简单的类
让我们先从一个简单的例子来开始对类的研究。下面定义了一个名为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基础篇:一个简单的类相关推荐
- Java基础 创建一个账户Account类,该类有id:账户号码(长整数),password:账户密码,name:真实姓名
题目: 创建一个账户Account类,该类有id:账户号码(长整数),password:账户密码,name:真实姓名,personId:身份证号码 字符串类型,email:客户的电子邮箱,balanc ...
- Java基础篇:为Box类添加一个方法
尽管创建一个仅包含数据的类是相当不错的事情,但这样的情况很少发生.大部分情况是你将使用方法存取由类定义的实例变量. 事实上,方法定义大多数类的接口.这允许类实现函数可以把内部数据结构的特定布局隐蔽到方 ...
- Java基础篇:简单数据类型
Java定义了8个简单(或基本)的数据类型:字节型(byte),短整型(short),整型(int),长整型(long),字符型(char),浮点型(float),双精度型(double),布尔型(b ...
- Java基础篇之什么是类集?
Java的类集框架使你的程序处理对象组的方法标准化.在Java 2出现之前,Java提供了一些专门的类如Dictionary,Vector,Stack和Properties去存储和操作对象组.尽管这些 ...
- Java基础篇:介绍嵌套类和内部类
在另一个类中定义的类就是嵌套类(nested classes).嵌套类的范围由装入它的类的范围限制.这样,如果类B被定义在类A之内,那么B为A所知,然而不被A的外面所知. 嵌套类可以访问嵌套它的类的成 ...
- 使用java基础完成一个简单的控制台输入的用户管理(包括用户注册,登录,修改密码,及一些相关校验)
要求 实体类 //该类为用户对象的实体类 public class User { private String name; private String password; p ...
- Java基础篇:简单介绍一下final
一个变量可以声明为final,这样做的目的是阻止它的内容被修改.这意味着在声明final变量的时候,你必须初始化它(在这种用法上,final类似于C/C++中的const).例如: final int ...
- 鸟哥的Linux私房菜(基础篇)- 一个简单的 SPFdisk 分割实例
一個簡單的 SPFdisk分割實例 最近更新日期:2005/06/12 磁碟分割是個很重要的學習知識!尤其是在您原本的硬碟空間不足了,或者是新增硬碟了,或者是為了增加磁碟效能而必須要規劃出比較適當大小 ...
- Java基础篇——类与子类
1. 什么是类,什么是子类? 类:类是Java程序的基本要素,一个Java应用程序就是由若干个类所构成的.类是Java语言中最重要的"数据类型". 子类:由继承得到的类叫子类. 引 ...
- java写一个外网访问的接口_【JAVA基础】一个案例搞懂类、对象、重载、封装、继承、多态、覆盖、抽象和接口概念及区别(中篇)...
0 前言 初学JAVA时,总会对一些概念一知半解,相互混淆,不明其设计的用意,如类.对象.重载.封装.继承.多态.覆盖.抽象类.接口概念.为便于理解和巩固,本文将基于一个案例及其变形,展现各个概念的定 ...
最新文章
- ubuntu mysql 改密码_tpcc-mysql 压力测试
- 【XXX贷】2014年10月XX日发标预告
- Windows安装配置tidevice
- 渗透知识-SQL注入
- LNMP一键安装脚本(第二版)
- 2017蓝桥杯省赛---java---B---2(纸牌三角形)
- angular封装富文本编辑器指令
- ajax post 提交无法进入controller 请求200
- bzoj1180: [CROATIAN2009]OTOCI
- 数据库中union和union all的区别
- 如何在windows 2008 server 新建用户
- PMP第十一章:项目风险管理
- v-distpicker 直辖市的修改
- 英语问题,(有些答案不对,不对的请说一声)
- Flutter问题记录 - Unable to find bundled Java version
- p值 统计学意义_什么是统计意义? P值定义以及如何计算
- TreeATE自动化测试平台简介
- 使用Git克隆vue-element-admin项目报错的解决方案
- 结课作业:机械设计制造及其自动化文献综述
- 你看到的好片子,原来藏着这么多黑科技……
热门文章
- 高速串行总线走线难点在哪?重要线信号的处理经验分享
- 关于这个错误的不明原因的解决之道
- 并发入库面临重复数据的问题
- oracle中循环读出一个表的信息插入到另外一个表中
- java并发:线程同步机制之计数器Exechanger
- LoadRunner函数中文翻译
- python---之np.prod() 函数计算数组元素乘积等
- 虚拟服务器的密码忘记了,忘记虚拟密码
- ubuntu安装python3.6_Ubuntu16.04下安装python3.6.4详细步骤
- char转化为cstring_C语言100题集合001-将一个数字字符串转换为一个整数