- 1、本文档共33页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Java基础第6章类设计Java基础第6章类设计
第六章 类设计
面向对象是一种强力的软件开发方法,它将数据和操作视为一个相互依赖、不可分割的整体。由于面向对象的方法更符合人们的思维习惯,同时有助于控制软件的复杂性、提高效率,从而得到了最广泛的认可,也已经成为目前最为流行的一种软件开发方法。在各个不同版本的中,对面向对象理念的解释也都是大同小异。其中以是Coad、Yourdon的:“面向对象=对象+类+继承+消息通讯”最为著名。也被人们所熟知。
6.1 类与对象
对象的初始化通常由类的构造器来完成。我们可以简单的把构造器理解为一种特殊的成员方法,在每次创建对象时自动被调用。使用构造器要注意以下几个问题:
1.构造器必须与类名相同;
2.构造器不能添加返回类型;
3.构造器只能用范围限定修饰符来修饰;
4.构造器一般是公有的;
5.构造器通常仅仅进行对象的初始化工作;
6.构造器是被系统自动调用的,不能像调用其他普通方法那样显式的调用构造器。
下面先看一个circle类的例子
例6.1 :
public class test
{
public static void main(String args[])
{
circle c = new circle();
c.output();
}
}
class circle
{
double r;//半径
double pai;//圆周率
public circle()
{
r = 3.5;
pai = 3.14;
}
public void output()
{
System.out.print(圆的面积为:\t);
System.out.println(pai*pai*r);
}
}
当主方法使用new关键字来创建circle对象时,就会自动调用构造器。其实除了可以用构造器进行初始化外,还能通过“语句块”的方式来实现。下面就通过“语句块”的方式来改写circle类,代码如下:
例6.2 :
class circle
{
double r;//半径
double pai;//圆周率
{
r = 3.5;
pai = 3.14;
}
public void output()
{
System.out.print(圆的面积为:\t);
System.out.println(pai*pai*r);
}
}
这看起来很难理解。然而我们只需要知道JAVA中能支持这种用法就够了。其实普通的“语句块”是很少用到的。用的更多的是static“语句块”来给类中的静态属性初始化。从上面的代码中,我们很容易的发现:很显然把圆周率(pai)定义为静态的更为合理一些。
例6.3 :
class circle
{
double r;//半径
static double pai;//圆周率
{//普通(非静态)语句块
r = 3.5;
}
static //静态语句块
{
pai = 3.14;
}
public void output()
{
System.out.print(圆的面积为:\t);
System.out.println(pai*pai*r);
}
}
其实JAVA引入 “语句块”的概念也是无奈之举:因为众所周知,JAVA是不支持静态构造器的。所以引入“语句块”就是为了解决静态属性初始化的问题。从上面的例子我们能够非常清楚的看出“语句块”就是用一对{}括起来的属性赋值语句,并且本身不能接受任何参数。所以JAVA中的“语句块”跟C#中的静态构造方法比起来就落了下乘。然而有总剩余无,我们所能做的也仅仅是期望在新的JDK版本中能有新的突破。
通过上面的例子,我们了解了“语句块”的概念。那么也需要知道构造器、非静态“语句块”、静态“语句块”在类实例化时的调用顺序。大多数的读者,往往并不太关心这种非常细节的技术问题。试想一下在非静态“语句块”中和构造器中都对同一个属性赋了值,那么最终是哪一个值呢?这种细节的东西如果没掌握住,那么在调试程序的时候会浪费大量的时间,并且往往找不到问题的所在。构造器与非静态“语句块”每实例化一个对象就调用一次。而静态“语句块”则是不管实例化多少个对象,都只在实例化第一个对象时才被调用一次。而调用的先后顺序是:静态语句块-(非静态语句块—构造器。
下面给出一个可以运行的程序,读者可以编译运行它来加深理解。
例6.4 :
public class transferSequence
{
{
System.out.println(**我是非静态的代码块,创建多少个对象我就被调用多少次);
}
static
{
System.out.println(--我是静态的代码块,无论创建多少个对
您可能关注的文档
- IPM模拟试卷IPM模拟试卷.doc
- IPCM观众调查表IPCM观众调查表.doc
- IPC G——物理IPC G——物理.doc
- IPO公司上市条件IPO公司上市条件.doc
- IPO尽职调查清单IPO尽职调查清单.doc
- iphone论文iphone论文.doc
- ipad桌面游戏ipad桌面游戏.doc
- IPQC管理规范IPQC管理规范.doc
- IP地址划分测试题IP地址划分测试题.doc
- IP地址单选题作业IP地址单选题作业.doc
- 人教版小学一年级下册数学精品教学课件 第六单元 100以内的加法和减法(一) 6.1.1 整十数加、减整十数.ppt
- 人教版小学三年级上册数学精品教学课件 第十单元 总复习 10.4 时分秒、测量.ppt
- 人教版小学三年级上册数学精品教学课件 第六单元 多位数乘一位数 6.2.7 用估算法解决问题.ppt
- 人教版小学二年级下册数学精品教学课件 第七单元 万以内数的认识 7.8 万以内数的写法.ppt
- 人教版小学二年级下册数学精品教学课件 第十单元 总复习 10.5 图形的运动.ppt
- 人教版小学二年级下册数学精品教学课件 第四单元 表内除法(二) 4.4 解决实际问题.ppt
- 人教版小学二年级下册数学精品教学课件 第九单元 数学广角——推理 9.3 练习二十一.ppt
- 人教版小学二年级下册数学精品教学课件 第二单元 表内除法(一) 2.1.2 按指定的份数平均分.ppt
- 人教版小学二年级上册数学精品教学课件 第四单元 表内乘法(一) 4.2.8 6的乘法口诀.ppt
- 人教版小学三年级上册数学精品教学课件 第四单元 万以内的加法和减法(二) 4.2.1 三位数减三位数(1).ppt
最近下载
- 2024年执业药师考试《药学专业知识二》第九章考点复习.pdf VIP
- 招商专员训考核题.doc VIP
- 2024年北京市中小学生天文观测竞赛试题附答案.doc
- GB4482-2006《水处理剂-氯化铁》.pdf
- GB∕T36547-2024 电化学储能系统接入电网技术规定编制说明.pdf
- 健康建筑评价标准T/ASC 02-2016.doc
- 登高架设作业汇总.ppt VIP
- 事业单位结构化面试试题.docx VIP
- 招商专员入职考核题.pdf VIP
- IPC-2221C-EN TOC2023印制版设计通用标准 Generic Standard on Printed Board Design.pdf
文档评论(0)