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

从教程(十)开始,已经从学习单个类的基本语法,转到了学习多个类之间 的关系。教程(十)中,学习了类与类长间的两种关系,关联和依赖。为了维护 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中是单继 承,即一个类只能继承一个父类。

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

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索string
, double
, public
, name
java基本教程
,以便于您获取更多的相关知识。

时间: 2024-09-19 09:02:07

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

Java 并发/多线程教程(十二)-JAVA同步块

本系列译自jakob jenkov的Java并发多线程教程,个人觉得很有收获.由于个人水平有限,不对之处还望矫正! 一个Java同步块标记一个方法或一个代码块作为同步.可以使用Java同步块来避免竞态条件. java同步关键字       在Java中同步的块被标记为Synchronized关键字.Java中的同步块在某些对象上是同步的.在同一对象上同步的所有同步块只能在同一时间内执行一个线程.所有试图进入同步块的其他线程都被阻塞,直到同步块中的线程退出该块. Synchronized关键字可以

Java语言入门教程(二):Java类的包

Java应用是由若干个类组成的.但是从逻辑上考虑,这些类解决的问题都是不同的. 比如某些类解决了数据库访问问题,某些类解决了安全控制问题-就如同我们计算 机硬盘上的文档,我们不会把它们都杂乱无章的放在某个硬盘的根目录下,而是按照个人 习惯进行分类,放在不同的文件夹下.Java应用中的类也一样,也应该按照逻辑进行分类 ,放在不同的目录下,这就是包的概念. 虽然Java语法本身,不要求必须给某个类显式指明包名,可以使用默认包.但是,在 开发Java项目的过程中,任何类都应该有包.对一个类指定包名,使

零基础易语言入门教程(一)_易语言

易语言简介 易语言是一门以中文作为程序代码编程语言.以"易"著称.创始人为吴涛.早期版本的名字为E语言.易语言最早的版本的发布可追溯至2000年9月11日.创造易语言的初衷是进行用中文来编写程序的实践.从2000年至今,易语言已经发展到一定的规模,功能上.用户数量上都十分可观. 易语言是可视全中文易学易用的编程高级语言,近年来大家都积极求学,可是怎么学好它啦?小编带大家认识易语言,并使用易语言编写第一个教程. 方法和步骤如下所示: 1.下载易语言软件: 大家直接百度"易语言5

Java语言入门教程(十三):Java语言中继承中的构造方法问题

教程(十一)中,了解了Java语言中继承的基本概念.Java中类与类的继承 ,是单继承,主要目的是复用.子类对象可以复用父类中权限允许的属性和方法 ,所以子类的构造方法和父类的构造方法之间,有一定的调用关系,本文中将进 行详细介绍. 首先,需要记住一个事实:子类的任何一个构造方法,都将先调用父类某个 构造方法.如子类Trainer中的构造方法: public Trainer() { } 虽然这个构造方法的方法体中什么代码也没有写,但是也调用了父类 Employee的构造方法,默认调用的是Empl

零基础易语言入门教程(二)之编程思路_易语言

易语言简介: 易语言是一门以中文作为程序代码编程语言.以"易"著称.创始人为吴涛.早期版本的名字为E语言.易语言最早的版本的发布可追溯至2000年9月11日.创造易语言的初衷是进行用中文来编写程序的实践.从2000年至今,易语言已经发展到一定的规模,功能上.用户数量上都十分可观. 上一篇跟大家讲了零基础易语言入门教程(一)编写第一个程序,然后接下来大家应该自己把支持库和易语言组件里面的控件全部认真的看一下,下面我直接跟大家分享下易语言简单编程思路. 方法和步骤如下所示: 1.易语言程序

零基础易语言入门教程(五)之逻辑型数据类型_易语言

在上篇文章给大家介绍了零基础易语言入门教程(四)之数据类型,上篇针对数值到文本类型知识,今天给大家介绍下逻辑型数据. 具体方法和步骤如下所示: 1.逻辑型数据非真即假: 首先申请一个局部变量(A)类型为:逻辑型,编写代码为:A=1>2,那么输出的结果应为假,因等于1是赋值与1,然后代码中写道1大于2,所以这是假的,见下图所示: 2.关系运算符: 在上图大家需注意的是,A后面的等于号是赋值符号,而后面的≥,≠,<一些符号则是关系运算符. 关系运算符不是非要设置变量给其赋值才可以使用的,同样他可以

JAVA之旅(十二)——Thread,run和start的特点,线程运行状态,获取线程对象和名称,多线程实例演示,使用Runnable接口

JAVA之旅(十二)--Thread,run和start的特点,线程运行状态,获取线程对象和名称,多线程实例演示,使用Runnable接口 开始挑战一些难度了,线程和I/O方面的操作了,继续坚持 一.Thread 如何在自定义的代码中,自定义一个线程呢? 我们查看API文档,我们要启动一个线程,先实现一个子类, package com.lgl.hellojava; public class MyThread extends Thread { @Override public void run()

Android开发入门(十二)列表控件 12.2 ListView的扩展功能

ListView是一个可以被深度扩展的视图.在做项目的时候,扩展ListView去显示数据是必不可免的.接下 来会展示如何在ListView中去选择多个物件,以及如何使用ListView的"过滤"功能. 1. 使用上一 节的工程:BasicViews5. 2. 在BasicViews5Activity.java中添加一些代码. String[] presidents; /** Called when the activity is first created. */ @Override

Android开发入门(十二)列表控件 12.1 ListView的基本使用

今天总结一下Android中的列表控件:ListView和Spinner. ListView可以垂直并可滑动地地显示 一些信息.下面阐述如何使用ListView显示一系列的信息. 1. 创建一个工程:BasicViews5. 2. strings.xml中的代码. <?xml version="1.0" encoding="utf-8"?> <resources> <string name="hello">He

WPF入门教程系列二——Application介绍

原文:WPF入门教程系列二--Application介绍 一.Application介绍 WPF和WinForm 很相似, WPF与WinForm一样有一个 Application对象来进行一些全局的行为和操作,并且每个 Domain (应用程序域)中仅且只有一个 Application 实例存在.和 WinForm 不同的是WPF Application默认由两部分组成 : App.xaml 和 App.xaml.cs,这有点类似于 Asp.Net WebForm,将定义和行为代码相分离. 微