Extends子句用于继承一个类,Implements子句声明在当前类中实现的接口,我们将在下面看到这些用法。
从“String oneUserId;”到“int retimeChat[]=new int[3];”是该类的属性变量,实际上类的属性变量声明时你可以使用变量存取修饰符,在我们的程序中采用了默认的情况,也就是只在本程序域中有效,对于程序域,你可以简单地理解为一对“{}”所引起的程序段。
“int retimeChat[]=new int[3];”声明了一个int型的名为retimeChat的一维数组,Java中的数组的应用相当灵活,你甚至能使用一个自定义类的数组。在下面,我们将看到这种用法。
事实上,这里对变量的声明方法也适用于在Java的其他地方声明变量。
在此之后,我们声明了一系列的类的方法。类的方法决定了一个类可以执行的动作。
类的方法声明的一般格式是:“[存取限制修饰符] 返回值类型 方法名 ([参数表]) [throws子句]”。
你可以从两个方面来理解方法的分类。
首先,从返回值情况看,方法分为有返回值的及无返回值的。对于有返回值的方法,你应该说明返回值类型,在这一类方法的方法体中,必须包含一个return语句,return语句返回的变量类型也就是返回值类型。对于这一类方法,你必须注意确保你的方法体中的确包含一个一定会被执行的return语句,当你的方法体中包含诸如if这样的控制语句时,你会理解什么叫一定会被执行的;对于无返回值的方法,你应该说明其返回值类型为void,只有构造函数例外,如果你还不知道什么是构造函数,你也不用着急,我们将在下一个Java程序中看到它。
其次,从参数表的情况看,方法分为带参数的和不带参数的,对于带参数,你必须在“()”中说明一个用逗号分隔的参数表,并在参数表中说明参数的数据类型,参数对应的变量名在方法体中不应再被重复定义;对于不带参数的方法,你仍然必须使用“()”,不过现在在这当中是不包含参数表的。
3.3一个说明当前在线用户的类
userList.java:
package customers;
import java.util.*;
public class userList
{oneUser theUserList[];/*在线用户列表*/
int userCount;/*当前在线用户数*/
public userList()
//构造函数
{theUserList= new oneUser[100];
userCount=0;
}
public void addUserList(String theOneUserId,String theOneUserName,
long theOneUserTime,String theOneUserPosion,String theOneUserSwjg,
String theOneUserSfks)
//向在线用户列表中添加一个用户,如果该用户在在线用户列表中已存在,
将不重复添加
{int i;
for (i=1;i<=userCount;i++) if (returnUserId(i).equals(theOneUserId)) break;
if (i==userCount+1)
{userCount=userCount+1;
oneUser theOneUser=new oneUser();
theOneUser.setOneUser(theOneUserId,theOneUserName,theOneUserTime,
theOneUserPosion,theOneUserSwjg,theOneUserSfks);
theUserList[userCount]=theOneUser;
}
}
public int returnUserCount()
//获取当前在线用户数
{return userCount;
}
public String returnUserId(int i)
//获取某一在线用户的ID
{return theUserList[i].getUserId();
}
public String returnUserName(int i)
//获取某一在线用户的用户名
{return theUserList[i].getUserName();
}
public String returnUserName(String userId)
//获取某一在线用户的用户名
{String UserName=new String("");
int i;
for (i=1;i<=userCount;i++) if (returnUserId(i).equals(userId))
UserName=theUserList[i].getUserName();
return UserName;
}
}
|
在这段程序中,以下几点是新出现的:
首先,我们使用了构造函数。构造函数是一个类的特殊的方法,该方法与类同名。构造函数在创建一个实例时被自动调用,以完成初始化工作,正如我们前面提到的,构造函数没有返回值类型(包括void)。
其次,我们使用了“oneUser theUserList[]”这样的一个数组,这也就是我们在前面提到的使用一个自定义类的数组。
最后,你应该已经注意到我们定义了两个方法名均为returnUsername的方法。这其实是我们常常提到的Java中的方法重载,对于这样的两个或几个方法,它们的参数表应该不同,而Java在引用这一方法时,会根据参数的类型和数量来确定被调用的方法,对于我们这个程序而言,两个方法分别返回某一在线用户列表中固定序号的用户的用户名,以及在线用户列表中ID为某一确定值的用户的用户名。其参数类型分别是int型和String型。
3.4一个用来连接数据库的类
DBconn.java:
package customers;
import java.sql.*;
public class DBconn
{String DBDriver="sun.jdbc.odbc.JdbcOdbcDriver";/*JDBC驱动,
此处采用JDBC-ODBC桥*/
String ConnStr="jdbc:odbc:tax_js_main";/*定义所连接的数据库*/
String MyUser="UserName";/*数据库用户名*/
String MyPassword="Password";/*数据库用户口令*/
Connection conn = null;/*连接*/
ResultSet rs = null;/*结果集*/
public DBconn()
//构造函数
{try
{Class.forName(DBDriver);
}
catch(java.lang.ClassNotFoundException e)
{System.err.println("DBconn (): " + e.getMessage());
}
}
public ResultSet executeQuery(String sql)
//执行SQL语句的方法
{rs = null;
try
{conn = DriverManager.getConnection(ConnStr,MyUser,MyPassword);
Statement stmt = conn.createStatement();
rs = stmt.executeQuery(sql);
}
catch(SQLException ex)
{System.err.println("aq.executeQuery:"+ex.getMessage());
}
return rs;
}
}
|
如果您对本文有任何疑问或者建议,请到讨论区发表您的意见:
>>
论坛入口 <<
上一篇:Java2下Applet数字签名具体实现方法
下一篇:JSP专题:第六部分:用JSP实现聊天室-2
【文章评论】
【收藏本文】
【推荐好友】
【打印本文】
【我要投稿】 【论坛讨论】
更多相关文章
|