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

2006-02-22 09:00:00 编辑 删除

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

Java 创建新类三、 创建子类

   而在面向对象方法学中,创建子类就是用以实现软件复用。在这一小节中,学习如何继承一个类,创建出更有特色的子类。

  举个例子,我们在程序中定义了一个类:“交通工具”,而这时我们需要一个“客机”类,我们就可以通过继承“交通工具”类共性(公用变量和方法),然后新增一些“客机”类独有的属性和方法,就能够很轻松地构建出新的类来。

   假设我们已有一个交通工具类vehicle:

  源程序:vehicle.java

public class vehicle
{
public int passenger;
public float carfare;
public vehicle()
{
passenger=0;
}
public vehicle(int p)
{
passenger=p;
}
public getgrossEarnings()
{
float grossEarnings= passenger*carfare;
return grossEarnings;
}
}

 
  在这个类中,有两个成员变量:

  1) passenger:定义为公用的,整型数,用于存放乘客总数;

  2) carfare:定义为公用的,浮点数,用于存放票价。

  同时,构造了两个构造器方法:

  1) 如果没带参数,则将成员变量passenger赋值为0;

  2) 如果带上了一个int型参数,则将成员变量passenger赋值为这个数。

  另外,在程序中还有一个方法:getgrossEarnings(),它用来统计这次的总收入(当然是乘客数乘以票价)。

  分析完这个类后,我们现在需要构建一个“客机”类,完成的功能与“交通工具”类相同。这时,我们就可以使用创建子类的方法来构建这个“客机”类:plane。

  源程序:plane.java


public class plane extends vehicle
{
public int baggage;
public float bPrice;
public plane()
{
super();
baggage=0;
}
public plane(int p,int b)
{
super(p);
baggage=b;
}
public getgrossEarnings()
{
float grossEarnings= passenger*carfare+baggage*bPrice;
return grossEarnings;
}
}

 

  下面,我们来分析一下这段程序:

  1)public class plane extends vehicle

  第1句,是用来定义类的。它与其它类的定义不同的地方是后面加上了extends vehicle,其中extends的意思是扩展,也就是plane类是从vehicle类中扩展的,也就是说plane是vehicle的子类。

  2)
public int baggage;
public float bPrice;

   由于在客机上,行李也是计费的,因此,我们需要加上两个变量baggage和bPrice,这样,plane类就有了四个成员变量:

  § passenger:从超类vehicle中继承,用于存放乘客总数;

  § carfare:从超类vehicle中继承,用于存放票价;

  § baggage:新的成员变量,整型,用于存放计费行李总公斤数;

  § bPrice:新的成员变量,浮点数,用于存放每公斤行李的运费。

  3)

public plane()
{
super();
baggage=0;
}

  这一段程序构建了一个构造器方法。在这个方法中使用了一个第一次遇到的语句:

super();

  这个语句是用来调用超类的构造器,也就是调用了vehicle类的构造器vehicle()。

  同样,我们以相同的方法定义了另一个构造器plane(int p,int b)。

  4)


public getgrossEarnings()
{
float grossEarnings= passenger*carfare+baggage*bPrice;
return grossEarnings;
}
 

  由于行李也要计费了,所以总收入的计算方法也就不一样了,因此,在plane类中重新定义了方法getgrossEarnings,这叫做“方法overlay”。实际上就是指在子类中,重新定义一个新的同名方法,替换掉超类中定义的同名方法。

0
上一篇 << Java 创建新类二、说明类的特性      下一篇 >> 任志强,中国迈进和谐社会的一颗毒…
  • 暂时还有没评论。
您还没有登录,请登录以后再发表评论。

关于博主

Java

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

博文相关