JAVA 类的继承与方法重写

本文档展示了Java编程中类继承和方法重写的概念。通过创建People、Staff和Teacher类,演示了如何继承属性和方法,以及如何通过构造函数初始化成员变量。同时,重写了info()和display()方法,以显示不同类的详细信息。实验还包含了一个TeacherManagement类,用于实例化Teacher对象并调用其info()方法展示所有信息。
摘要由CSDN通过智能技术生成

类的继承与方法重写

一、 实验目的:

  1. 理解类继承的意义和作用;
  2. 掌握类继承的程序设计;
  3. 理解父类中哪些成员可以直接继承、哪些成员不能被继承;
  4. 掌握成员方法的重写;
  5. 理解哪些方法可以被重写、哪些方法不能被重写;
  6. 理解重写与重载的区别。

二、 实验要求:

以下每一个类单独保存一个文件:

设计一个类,名为 People:

  1. 成员变量为:
    姓名,数据类型为 String
    性别,数据类型为 char,数据包括’F’和’M’。
    家庭地址,数据类型 String

  2. 设计一个构造方法:
    包括三个参数,分别对应成员变量姓名、性别、家庭地址,在实例化时对三
    个成员变量赋初值。

  3. 设计一个成员方法 info(),访问修饰符为 public,以 String 类型,输出三个成员变量的值,输出格式为:
    姓名:XXX,性别:X,地址:XXXXXXXXXXXXXXXXXX

  4. 设计一个成员方法 display(),访问修饰符为 final,用于显示三个成员变量
    的值,显示格式为:
    姓名: XXXXXX
    性别: X
    地址: XXXXXXXXXXXXXXXXXXXX

设计一个职工 Staff 类

  1. 继承 People 类;
  2. 增加如下成员变量:
    毕业院校,类型 String
    入职年份,类型 int
  3. 设计一个构造方法,实现对包括父类的所有成员变量赋初值。通过调用
    父类的构造方法实现对父类三个成员变量赋初值,接着对本类中新增的两个成员变量赋初值。
  4. 重写父类的 info()方法,返回值为 String,通过调用父类的 info()方法取得
    父类三个成员的值,增加本类 2 个成员变量,实现 String 的完整输出,格式:
    姓名:XXX,性别:X,地址:XXXXXXXXXXXXXXXXXX,毕业院校:XXXXX,
    入职年份:XXXXX 年
  5. 重写父类的 display()方法,显示整个对象的全部信息。注意编译出现什么
    问题,分析为什么?如何修改。

设计一个 Teacher 类:

  1. 继承 Staff 类;
  2. 增加如下成员变量:
    职称,数据类型为 String
    级别,数据类型为 int;一般有 12 级,1—12 级
  3. 设计一个构造方法,通过构造方法在实例化时实现对所有成员变量、包
    括父类的成员变量进行初始化;
  4. 重写父类的 info()方法,返回类型为 String,通过调用父类的同名方法、
    用它返回包括所有父类的所有成员变量的值。

设计一个可以执行的 TeacherManagement 类

在该类的 main()方法中,用Teacher 类定义、实例化 TC1 和 TC2 两个对象,并调用对象的 info()方法显示对象的所有信息。

package com.jmu.testextends;

/**
 * @Author zhinian
 * @Date 2021/4/2 18:58
 * @Version 1.0
 */
//定义一个测试类 TeacherManagement
public class TeacherManagement {
    public static void main(String[] args) {
        Teacher TC1 = new Teacher("陈福",'M',"集友楼5-505",
                "诚毅学院",2021,"教授",12);
        Teacher TC2 = new Teacher("执念",'F',"集友楼5-505",
                "集美大学",2022,"讲师",2);

        System.out.println(TC1.info());
        System.out.println(TC2.info());
        System.out.println("=============================");

        System.out.println("重写了toString:");
        System.out.println(TC1);
        System.out.println(TC2);



    }
}
package com.jmu.testextends;

/**
 * @Author zhinian
 * @Date 2021/4/2 18:38
 * @Version 1.0
 */
//定义一个People类,父类
public class People {
    String name;//姓名
    char sex;//性别
    String address;//家庭地址

    public People() {
    }

    public People(String name, char sex, String address) {
        this.name = name;
        this.sex = sex;
        this.address = address;
    }

    public String info(){
        return "姓名:"+this.name+",性别:"+this.sex+",地址:"+this.address;
    }

    public String display(){//当父类成员方法用final关键字修饰时,不可被子类继承
        return "姓名:"+this.name+"性别:"+this.sex+",地址:"+this.address;
    }


}
package com.jmu.testextends;

/**
 * @Author zhinian
 * @Date 2021/4/2 18:42
 * @Version 1.0
 */
//定义一个Staff类继承People类
public class Staff extends People{
    String graduatedCollege;//毕业院校
    int employmentYear;//入职年份

    public Staff(String name, char sex, String address, String graduatedCollege, int employmentYear) {
        super(name, sex, address);
        this.graduatedCollege = graduatedCollege;
        this.employmentYear = employmentYear;
    }

    //重写info方法
    @Override
    public String info() {
        return "这个是重写info方法,"+super.info()+
                ",毕业院校:"+this.graduatedCollege+",入职年份:"+this.employmentYear;
    }

    //重写display方法
    @Override
    public String display() {
        return "这个是重写display方法,"+super.display()+
                "毕业院校:"+this.graduatedCollege+",入职年份:"+this.employmentYear;
    }

    @Override
    public String toString() {
        return "Staff{" +
                "graduatedCollege='" + graduatedCollege + '\'' +
                ", employmentYear=" + employmentYear +
                ", name='" + name + '\'' +
                ", sex=" + sex +
                ", address='" + address + '\'' +
                '}';
    }
}
package com.jmu.testextends;

/**
 * @Author zhinian
 * @Date 2021/4/2 18:55
 * @Version 1.0
 */
//定义一个Teacher类,继承Staff类
public class Teacher extends Staff{
    String positionalTitles;//职称
    int rank;//级别

    public Teacher(String name, char sex, String address, String graduatedCollege, int employmentYear, String positionalTitles, int rank) {
        super(name, sex, address, graduatedCollege, employmentYear);
        this.positionalTitles = positionalTitles;
        this.rank = rank;
    }

    //重写info方法
    @Override
    public String info() {
        return super.info()+",职称:"+this.positionalTitles+",级别:"+this.rank;
    }

    @Override
    public String toString() {
        return "Teacher{" +
                "positionalTitles='" + positionalTitles + '\'' +
                ", rank=" + rank +
                ", graduatedCollege='" + graduatedCollege + '\'' +
                ", employmentYear=" + employmentYear +
                ", name='" + name + '\'' +
                ", sex=" + sex +
                ", address='" + address + '\'' +
                '}';
    }
}

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值