第三篇:(3)eclipse
第四篇:(4)品味第一杯咖啡
第五篇:(5)java语言基础
第六篇:(6)编写猜数字游戏
第七篇:(7)大话面向对象(上)
构思这篇咖啡馆的时候时值奥运圣火熊熊燃烧,看到中国奥运代表团努力为国争光,不由不决定把这次的主题献给我们的奥运健儿!
如果你是java咖啡馆的常客,那么在不知不觉中你早已接触并运用过java的面向对象知识。在这回的咖啡馆中,让我们详细剖析一个面向对象编程的实例,把知识巩固下来。
奥运是国际性的运动盛会,中国运动员自然要用英文形式的名字才便于同国际接轨。这回要编写的程序便是用来解析英文名字的工具。通常,gary chan这样的英文名字形式表示名在前、姓在后。而yao, ming这样的形式则表示姓在前名在后。大家千万不要以为gary在这里平白无故用yao, ming打广告,yao初中时候可是跟gary一个班的,他被语文老师仰着头臭骂痛哭后,经常是gary安慰他,并经常一同骑车回家。看着今日的yao已经是世界级的运动员为国争光了,gary更需要加倍努力了……
ok,言归正传,我们的程序将自动判断名字形式,并且分解出姓和名。还是老规矩,请用eclipse生成一个名为chap 07 nameparser的项目,并且加入一个新的名为nameparser类,在package属性填写com.cfan.garychan.nameparser。如果你忘记了package的知识,请参考《java咖啡馆(6)—编写猜数字游戏 》中关于包概念的描述。
回顾一下,类是定义了从类生成的实例(instance)中的数据和方法的关系的模板。有人喜欢把类比作图章,图章敲出来的图案便是对象,的确很形象。
java中用class关键字来定义类,不过我们用eclipse来定义更加方便。仍然用eclipse新建一个叫做namer的类,记得不要在public static void main(string[] args)前面打勾,确定后eclipse便生成一个新的java源文件namer.java,里面的代码如下:
public class namer {
}
这个类非常简单,可惜不能做任何事情。
1.封装
面向对象程序设计中,一个非常重要的技术便是封装,也就是把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏。这样做的好处在于可以使类内部的具体实现透明化,只要其他代码不依赖类内部的私房数据,你便可以安心修改这些代码。此外,这样做也是出于安全方面的考虑,如果代表网上支付卡密码的变量随便就可以被访问到,这样的系统谁还敢用呢?
封装主要依靠对类、数据和方法的访问控制,从语法上讲就是加上private、protected、public等关键词,如果没有关键词修饰则默认为package。它们控制权限如下表所示:
specifier 类 子类 包 世界
private x
protected x x* x
public x x x x
package x x
注意上面的x*,父类的protected部分,只有在与父类在同一个包内的子类才能够访问,否则也是不可访问的。
让我们结合实例理解一下。稍微把namer类改一下:
public class namer {
protected string surname; // 姓
protected string firstname; // 名
public string getfirstname() {
return firstname;
}
public string getsurname() {
return surname;
}
}
这个类有两个string类型的成员变量,surname和firstname,分别用来储存姓和名。这两个成员变量前都有protected修饰词,按照表格,这两个变量仅能够被类本身、子类以及包中其他类操作,而包外的类则无权访问。不过,为了跟包外的代码进行沟通,namer类提供了getfirstname和getsurname这两个public的方法。从而,对包外的类而言,姓名数据是只读的。
Java Asp PHP .Net XML C/C++ CGI VB Jsp J2ee J2se J2me EJB Servlet Tomcat Resin Struts Weblogic Eclipse ANT GUI JMS Web servise IDEA Webphere Hibernate Spring Jboss Applet Swing Socket Javamail Perl Ajax P2P 安全 模式 框架 测试 开源 游戏
Windows XP Windows 2000 Windows 2003 Windows Me Windows 9.x Linux UNIX 注册表 操作系统 服务器 应用服务器