- 浏览: 306818 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
lzy.je:
期待FSF的!1985.10成立到现在GNU有多少大牛的项目数 ...
改变IT世界的11大Apache开源技术 -
dotaking:
7、8不了解
改变IT世界的11大Apache开源技术
8.2.2.3 构造方法声明
构造方法(Constructor),也称作构造函数、构建器等,是初学者在学习时最容易混淆的概念之一。下面首先讲述构造方法和方法的区别。
构造方法和方法无任何关系,只是在翻译时名称比较类似罢了。而且构造方法和方法的功能不同,声明和调用的语法也不相同。
构造方法的功能:实现类这种数据类型的变量的初始化。由于类是一种复合数据类型,而复合数据类型的变量也比较复杂,所以专门需要对该类变量进行初始化,则语法上提供了专门的结构——构造方法。这就是构造方法出现的原因。而方法实现的是逻辑的功能,对应于逻辑上的算法,更多的是实现程序逻辑。所以构造方法是语法结构,而方法是逻辑功能,两者之间根本无关。
构造方法声明的语法格式:
访问控制符 构造方法名称(参数列表){
构造方法体;
}
在该语法中,访问控制符指声明的构造方法被访问的权限,构造方法名称是标识符,语法上要求构造方法的名称必须类名相同,后续小括号内部是参数列表,其语法格式和方法参数列表的语法格式相同。
下面是构造方法的示例:
public class Box{
int length;
int width;
int height;
public Box(){
length = 10;
width = 10;
height = 10;
}
public Box(int l,int w,int h){
length = l;
width = w;
height = h;
}
}
在该Box类中,声明了两个构造方法,一个没有参数,一个包含三个int类型的参数。在没有参数的构造方法中,将三个属性的值都初始化为10。带参数的构造方法中,可以传递进来三个参数,然后在构造方法内部依次把参数的值赋值给属性。
通常情况下,构造方法的声明放在属性声明和方法声明的中间。
一个类内部的构造方法可以有任意多个,但是要求这些构造方法不能相同。因为在一个类内部构造方法的名称都是相同的,所以只要参数列表相同的构造方法都是相同的构造方法。例如以下两个构造方法是相同的:
public Test(int a,int[] b){}
public Test(int b,int[] a){}
如果一个类声明中不包含构造方法的声明,则系统会自动为该类添加一个构造方法,当然如果类中已声明了构造方法则系统不会添加,这个系统自动添加的构造方法一般被称为默认构造方法,其声明格式如下:
public 构造方法名称(){}
所以以下两个代码是相同的:
public class DefaultConstructor{
int a;
}
和
public class DefaultConstructor{
int a;
public DefaultConstructor(){}
}
在第一个代码中,没有声明构造方法,则系统自动添加默认的构造方法,而第二个代码中声明的构造方法和默认构造方法的结构一致,所以两个代码在功能上是完全相同的。
总之,构造方法是系统提供的一个结构,该结构的功能是实现对于类的变量的初始化,可以根据逻辑的需要声明对应的构造方法,并在构造方法内部根据需要进行具体的初始化。
8.2.2.4 面向对象基础使用
下面以一个简单的示例来描述面向对象的基本使用,主要是类声明的相关语法,以及基础的类设计的知识。
使用面向对象的方式来描述房屋的结构,要求如下:
(1) 门:(颜色为红色、可以被推开和关闭)
(2) 窗户:(颜色为白色、有一块玻璃(透明色、可以卸下)、可以被推开和关闭)
(3) 地:(由100块地板砖组成)
(4) 地板砖:(黄色、长1米、宽1米)
说明:其中红色用1代替,白色用2代替,黄色用3代替 透明色用0代替。
在使用面向对象描述时,将其中的名词转换为类,将该类内部的特征转换为属性,将该类内部的功能转换为方法,在构造方法内部实现对于属性的初始化。
则在该要求中,抽象的类一共有5个:门、窗户、玻璃、地和地板砖。其中的颜色作为对应类的属性,推开和关闭作为对应类的方法。前面介绍过类是一种数据类型,则可以声明类类型的变量,并可以将该变量作为类的属性,这种类和类的关系在面向对象中称作使用关系。则按照该思路实现的代码如下:
/**
* 门的类
* 文件名:Door.java
*/
public class Door {
/**颜色*/
int color;
public Door(){
color = 1; //初始化颜色
}
public void open(){}
public void close(){}
}
/**
* 窗的类
* 文件名:Window.java
*/
public class Window {
/**颜色*/
int color;
public Window(){
color = 2; //初始化颜色
}
public void open(){}
public void close(){}
}
/**
* 玻璃类
* 文件名:Glass.java
*/
public class Glass {
/**颜色*/
int color;
public Glass(){
color = 0; //初始化颜色
}
public void remove(){}
}
/**
* 地板类
* 文件名:Floor.java
*/
public class Floor {
FloorBrick[] fb;
public Floor(){
fb = new FloorBrick[100];
for(int i = 0;i < fb.length;i++){
fb[i] = new FloorBrick(); //初始化每个元素
}
}
}
/**
* 地板砖类
* 文件名:FloorBrick.java
*/
public class FloorBrick {
/**颜色*/
int color;
/**长度*/
int length;
/**宽度*/
int width;
public FloorBrick(){
color = 3; //初始化颜色
length = 1; //初始化长度
width = 1; //初始化宽度
}
}
说明:在Floor类的代码中涉及到对于类类型的变量初始化的问题,相关语法将在后续详细介绍。
在该示例中,使用面向对象的思想描述了要求的房屋结构,并以Java语言语法的格式将面向对象的思想转化为具体的代码,从而实现对于面向对象技术的基本使用。
发表评论
-
java中文问题的分类
2008-12-23 13:12 704中文问题的分类及其建议最优解决办法 <?xml:name ... -
Java编程—多态性
2009-01-05 17:46 668Java编程—多态性 8.5. ... -
Java编程——继承(二)
2009-01-05 17:48 578方法覆盖 前面介绍了继承的一些基础知识,现在介绍一 ... -
详细解析Java中抽象类和接口的区别
2009-01-06 13:46 605在Java语言中, abstract ... -
[强列推荐]关于java的hashCode方法
2009-03-12 11:39 750[强列推荐]关于java的hashCode方法 有许多人学了 ... -
Java类完整的构造执行顺序
2009-04-02 11:17 1002Java类完整的构造执 ... -
java异常机制介绍
2009-04-28 14:35 769java异常机制介绍 Java 语言要求 java ... -
Java安全通信、数字证书及应用实践
2009-05-31 11:54 744Java安全通信、数字证书及应用实践【IT168 技术文档】一 ... -
Java安全通信、数字证书及应用实践
2009-05-31 11:55 803二、 Java中的数字证书 ... -
Java安全通信、数字证书及应用实践
2009-05-31 11:58 945三、数字证书的签发(签名) 我们在上面创建好了数字证书,但 ... -
Java安全通信、数字证书及应用实践
2009-05-31 12:03 829四、运行我们的 applet 我们来写一个 html文件来 ... -
Java调用批处理或可执行文件
2009-06-24 15:24 879Java调用批处理或可执 ... -
Java SE 6 新特性: JMX 与系统管理
2009-06-29 14:39 7522006 年底,Sun 公司发布了 Java St ... -
Java:接口回调
2009-07-08 17:32 1044Java:接口回调 接口回调是指:可 ... -
Java Exception 处理之最佳实践
2009-07-08 17:48 650关键字: java/java编程 本文是Except ... -
JAVA对数字证书的常用操作
2009-07-10 10:54 692一需要包含的包 import java.security.* ... -
Java网络编程
2009-07-13 11:12 8681. 什么是TCP/ IP协议? 2. TCP/IP有哪 ... -
java 常用知识
2009-07-13 11:25 7011:关于设置的classpath: 1) ... -
Java语言中的面向对象特性
2009-07-13 11:33 1116课前索引 【课前思考 ...
相关推荐
简单的JAVA程序——贪食蛇简单的JAVA程序——贪食蛇简单的JAVA程序——贪食蛇简单的JAVA程序——贪食蛇简单的JAVA程序——贪食蛇简单的JAVA程序——贪食蛇简单的JAVA程序——贪食蛇
这份资料详细讲解了<Java编程——记事本通信软件内容>,希望能给能应用该软件的朋友一点帮助!给你带去的一点点方便就是对我最大的回报! Thank you!
java毕业设计——java+毕业设计+扫雷(程序).zip java毕业设计——java+毕业设计+扫雷(程序).zip java毕业设计——java+毕业设计+扫雷(程序).zip java毕业设计——java+毕业设计+扫雷(程序).zip java毕业设计——java...
java网络编程——网络版题库程序(主要技术java+socket+多线程+mysql),程序是C/S 版本的,由于服务器端是java写的,所有客户端使用android也是很容易与服务器对接的
java程序设计——类似捕鱼达人的java小游戏java程序设计——类似捕鱼达人的java小游戏java程序设计——类似捕鱼达人的java小游戏java程序设计——类似捕鱼达人的java小游戏java程序设计——类似捕鱼达人的java小游戏...
Java线程
java基础——方法的重写、多态+instanceof(csdn)————程序
Java基础——面向对象编程
非常全面的java教程,包含了java的基础技术,还有数据库,网络,GUI方面的知识,非常好的一个教程
java基础——数组及其应用(csdn)————程序
java毕业设计——java游戏设计打飞机程序设计与开发(源代码+论文).zip java毕业设计——java游戏设计打飞机程序设计与开发(源代码+论文).zip java毕业设计——java游戏设计打飞机程序设计与开发(源代码+论文).zip ...
Java编程经典——2011新版Java教程Java编程经典——2011新版Java教程
AIDE集成开发环境是一个Android Java集成开发环境,可以让你在Android系统内进行Android软件和游戏的开发。AIDE集成开发环境不仅仅是一个编辑器,而是支持编写-编译-调试运行整个周期,开发人员可以在Android手机...
java毕业设计——基于java的视频会议系统的设计与实现(程序+论文).zip java毕业设计——基于java的视频会议系统的设计与实现(程序+论文).zip java毕业设计——基于java的视频会议系统的设计与实现(程序+论文).zip ...
java基础——Scanner的基础和进阶(csdn)————程序
java基础——创建对象与内存分布(csdn)————程序
java毕业设计——java画图形学程序的设计与实现(论文+源代码).zip java毕业设计——java画图形学程序的设计与实现(论文+源代码).zip java毕业设计——java画图形学程序的设计与实现(论文+源代码).zip java毕业设计...
java毕业设计——基于小程序的交友系统的设计与实现(答辩PPT+源代码).zip java毕业设计——基于小程序的交友系统的设计与实现(答辩PPT+源代码).zip java毕业设计——基于小程序的交友系统的设计与实现(答辩PPT+源...
用java实现的一个简易计算器,已经打包成jar包,双击运行即可