史记-学习JAVA
凤凰博报 由你开始
http://java.blog.ifeng.com
发表 管理 分类 简介 头像 功能 音乐 友情链接 模板 个性域名

2006-02-21 16:38:00 编辑 删除

归档在 JAVA知识 | 浏览 592 次 | 评论 0 条

 
   1.
  源程序:Birthday.java
public class Birthday
{
public String year;
public String month;
public String day;
public Birthday()
{
year=”0000”;
month=”00”;
day=”00”;
}
public Birthday(String y,String m,String d)
{
year=y;
month=m;
day=d;
}
public String getBirthday()
{
String fullbirthday=month+”/”+”/”+day+”/”+year;
return fullbirthday;
}
}


  源程序:useBirthday.java


public class useBirthday
{
public static void main(String argv[])
{
Birthday birthday1=new Birthday();
Birthday birthday2=new Birthday("1949","10","01");
System.out.println(birthday1.getBirthday());
System.out.println(birthday2.getBirthday());
}
}


    看一下第二个程序useBirthday.java,这是个Java应用程序,main方法中共有四条语句。前两条,看上去象是定义变量:
Birthday birthday1=new Birthday();
Birthday birthday2=new Birthday("1949","10","01");
    在Java语言中并没有Birthday这种变量类型。Java语言编译器在useBirtday.java程序所在目录中发现了包含Birthday类定义的Birthday类:Birthday.class。
  也就是说,这两条语句定义了2个属于Birthday类的对象:birthday1和birthday2。从Birthday.java程序中,我们可以看到Birthday类包含三个字符型成员变量:
public String year;
public String month;
public String day;
    我们将Birthday称为类,而将birthday1和 birthday2称为对象。类是一类事物,而对象则是一个个体。

  成员变量是一个形象的术语,表示这些变量属于这个对象,属于这个类。

  同时,分别使用new Birthday()和new Birthday(“1949”,”10”,”01”)为它们赋初值。

  1)Birthday birthday1=new Birthday();
  在这一句中,调用的是Birthday类中的Birthday()方法,我们从Birthday.java中可以看到这个方法实现:

public Birthday()
{
year=”0000”;
month=”00”;
day=”00”;
}

  也就是说,它将对象birthday1的三个成员变量year,month和day分别赋予了初值“0000”,“00”和“00”。

  2) Birthday birthday2=new Birthday("1949","10","01");

  在这一条语句中,虽然方法名同是Birthday,但它带上了参数,所以它调用的是Birthday类中的Birthday(String y,String m,String d)方法。这个方法的实现是:


public Birthday(String y,String m,String d)
{
year=y;
month=m;
day=d;
}

  也就是将其所带的参数值,分别赋值给三个成员变量。在本例中,“1949”赋值给year,“10”赋值给month,“01”赋值给day。

  这个程序中另两条语句则十分相似:


System.out.println(birthday1.getBirthday());
System.out.println(birthday2.getBirthday());
   很明显,这两条语句的用途是打印出birthday1和birthday2两个对象的一些信息。什么信息呢?我们可以发现这两条语句中都使用了Birthday类中的getBirthday方法。
  一些提示:
  大家注意观察在上面的语句是如何调用getBirthday方法的:
 birthday1.getBirthday()

  前面是对象名,后面是方法名,中间用“.”连接。请记住这个“.”,它经常被使用。形象的说,它就表示“的”。即birthday1的getBirthday方法。同样,我们可以使用这样在方法来访问它的成员变量:birthday1.year,即对象birthday1的成员变量year。
  我们就来看一下这个方法做了什么:
 public String getBirthday()
 {
 String fullbirthday=month+”/”+”/”+day+”/”+year;
 return fullbirthday;
 }

  “+”在字符串操作中的用途是用来进行字符串合并的。我们通过month+”/”+”/”day+”/”+year语句,把birthday1和birthday2两个对象的三个成员变量组成了一个“月/日/年”的常用日期表示方法。

  然后,getBirthday方法将这个用“月/日/年”表示法表示的生日日期返回(使用return方法)给System.out.println,这样,我们就得到了如图8-2的输出:

00/00/0000
10/01/1949

  通过上面的实例与讲解,我们可以得出创建一个新类的方法:

  1) 构思所需类的成员变量和成员方法;
  2) 用以下格式来编写类:
类修饰符 class 类名
{
成员变量定义;
……
成员方法定义;
……
}
  3) 使用javac编译这个类;
  4) 然后我们就可以在其它类中使用这个类。

  注意:

  当你编译使用自定义类(如Birthday)的程序(如useBirthday.java)时,这个类(Birthday.class)必须与程序(useBirthday.java)位于相同的目录中,或者在系统变量CLASSPATH定义的目录中。否则编译时将找不到这个类,以致程序无法编译成功。

  一些提示:
  当你需要同时编译几个Java文件时,你可以使用一条命令来完成。例如:
 javac Birthday.java useBirthday.java
  javac程序将一起编译所有这些文件。我们知道编译useBirthday.java时,需要用到Birthday.class(就是由Birthday.java编译生成的)。那么大家可能会以为,我们一定要将Birthday.java放在前面,以确保能够先编译生成Birthday.class。

  其实并不需要,Java编译器能够智能地处理,你完全可以将useBirthday.java放在Birthday.java前面。

  我们在Birthday类定义中,发现有两个与类Birthday同名的成员方法:

 public Birthday()
 public Birthday(String y,String m,String d)

  这种与类同名的成员方法称为构造器。每当使用new操作符创建属于这个类的对象时,就会执行构造器方法。
  一个类可以有多个构造器,在使用new操作符时,执行哪个构造器则取决于它所还的参数。如:
  1)Birthday birthday1=new Birthday();
  在这条语句中,由于调用Birthday方法时,并未有任何参数,所以将调用Birthday类的构造器Birthday()。
  2) Birthday birthday2=new Birthday("1949","10","01");
  而在这条语句中,调用Birthday方法所带的参数与Birthday(String y,String m,String d)相吻合,所以将调用Birthdya类的构造器Birthday(String y,String m,String d)。因些,将完成以下赋值工作:
  1)year=y; & year=“1949”
  2)month=m;& month=“10”
  3)day=d;  & day=“01”
  注意:  如果调用时的参数与所有构造器不吻合,将使Java编译器在编译程序时报错,使得无法编译成功。

==========================================================================

      以上为本人根据LinuxAID网站的教材学习所做的笔记,欢迎大家转载,但是请注意出处,并注明作者为“暂住证”.

0
下一篇 >> Java 创建新类二、说明类的特性
  • 暂时还有没评论。
您还没有登录,请登录以后再发表评论。

关于博主

Java

  凝思历史与真相,让我们更清楚的认知这个世界以及我们自己; 共同学习JAVA 本站网址www.xuejava.cn

博文相关