快速业务通道

Java语言入门教程(十二):Java语言中继承之基本概念 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-16

Java语言入门教程(十二):Java语言中继承之基本概念

时间:2011-06-13 csdn博客 taomoon719

从教程(十)开始,已经从学习单个类的基本语法,转到了学习多个类之间 的关系。教程(十)中,学习了类与类长间的两种关系,关联和依赖。为了维护 1对多的关系,在教程(十一)中,学习了数组。除了关联和依赖,类与类还有 一种非常重要且常见的关系,就是继承。本文将介绍继承的概念、作用、使用场 景等。

假设有这样一个简单需求(其实谈不上是需求,仅仅为了初学者容易理解而 编造):某培训中心要开发一个内部员工管理系统。该培训中心目前有两个部门 ,技术资源部和业务部。技术资源部的员工负责讲课,称为讲师。业务部员工负 责联系洽谈业务,称为销售。在管理系统中,需要管理的是所有员工的姓名、薪 水,以及讲师的技术方向,销售的任务量。…..

对上述简单描述,让我们分析一下,该培训中心的系统中,主要管理的对象 是什么?不难看出,主要是两种员工,即讲师和销售。讲师和销售有不同之处, 如讲师有授课方向属性,销售有任务量属性,二者还有很多相同之处,比如都需 要管理其名字,薪水。也就是说,如果我们创建两个类,Trainer类,Sales类, 那么这两个类中一定有相同的部分。面向对象编程的一大目标就是重复使用,我 们如何能让多个类中相同的部分能重复使用哪?就可以借助继承这一特性来完成 。可以说,继承的主要目的是为了重复使用。我们可以把多个类中相同的部分抽 取出来,放到一个类中,这个类叫父类,或者超级类,其他的类可以继承这个类 ,从而重用该类中的属性和方法,这些类叫子类,或者衍生类。在Java语言中, 继承使用extends关键字完成。

接下来,我们使用代码,把培训中心的员工类进行展现。

package com.csst.inherit;
public class Employee {
    private String name;
    private double salary;
    public Employee() {
    }
    public Employee(String name, double salary) {
       super();
       this.name = name;
       this.salary = salary;
    }
    public String getName() {
       return name;
    }
    public void setName(String name) {
       this.name = name;
    }
    public double getSalary() {
       return salary;
    }
    public void setSalary(double salary) {
       this.salary = salary;
    }
}
package com.csst.inherit;
public class Trainer extends Employee {
       private String course;
       public Trainer() {
       }
       public Trainer(String name, double salary, String course) {
              super(name, salary);
              this.course = course;
       }
       public String getCourse() {
              return course;
       }
       public void setCourse(String course) {
              this.course = course;
       }
}
package com.csst.inherit;
public class Sales extends Employee {
       private double task;
       public Sales() {
              super();
       }
       public Sales(String name, double salary, double task) {
              super(name, salary);
              this.task = task;
       }
       public double getTask() {
              return task;
       }
       public void setTask(double task) {
              this.task = task;
       }
}
package com.csst.inherit;
public class TestEmployee {
    /**
     * @param args
     */
    public static void main(String[] args) {
       // TODO Auto-generated method stub
       Sales sale=new Sales("Kate",3000,100000);
       System.out.println("sale.name : "+sale.getName()

+" sale.salary : "+sale.getSalary()+" sale.task: 

"+sale.getTask());
       Trainer trainer=new Trainer

("Rose",3000,"Java");
       System.out.println("trainer.name: "+trainer.getName

()+" tainer.salary: "+trainer.getSalary()+" 

trainer.course: "+trainer.getCourse());
    }
}

运行结果为:

sale.name : Kate sale.salary : 3000.0 sale.task: 100000.0

trainer.name: Rose tainer.salary: 3000.0 trainer.course: Java

以上代码中,Employee是父类,Trainer和Sales是子类,通过extends继承了 Employee。因为继承了Employee,所以Trainer和Sales可以重复使用Employee中 的方法,如getName,getSalary,当然,需要注意权限问题。

继承是“is-a”关系,即子类对象都是父类类型的对象。如Trainer的对象可 以说是一个Employee类型对象。在Java语言中,一定要记住的是:Java中是单继 承,即一个类只能继承一个父类。

继承中还有很多其他的细节,如方法覆盖,构造方法,抽象类,多态参数等 ,在后续教程中,将逐一介绍。

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号