Java实验三类的继承与派生

news2024/11/16 12:04:10

1.定义一个Person类,包含姓名(name)、性别(sex)、年龄(age)等字段;继承Person类设计Teacher 类,增加职称(pro)、部门(department)等字段;继承Person类设计Student类,增加学号(no)、入学时间(enter)、专业(major)等字段,定义各类的构造方法和toString()方法,并分别创建对象进行测试.

输出样例结果如下:

package step1;

import java.util.Scanner;

class Person {
    String name;
	String sex;
	int age;

	public Person(String name, String sex, int age) {
		this.name = name;
		this.sex = sex;
		this.age = age;
	}                                                
}

class Student extends Person {
    String no;
	String enter;
	String major;

	public Student(String name, String sex, int age, String no, String enter, String major) {
		super(name, sex, age);
		this.no = no;
		this.enter = enter;
		this.major = major;
	}

	@Override
	public String toString() {
		return   name + "," + sex + "," + age + "," + no + "," + enter + "," + major;
	}                                               
}

class Teacher extends Person {
    String pro;
	String department;

	public Teacher(String name, String sex, int age, String pro, String department) {
		super(name, sex, age);
		this.pro = pro;
		this.department = department;
	}

	@Override
	public String toString() {
		return  name + "," + sex + "," + age + "," + pro + "," + department;
	}                                                
}

public class Lab3_1 {
	public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
		Student student = new Student(sc.next(), sc.next(), sc.nextInt(), sc.next(), sc.next(), sc.next());
		Teacher teacher = new Teacher(sc.next(), sc.next(), sc.nextInt(), sc.next(), sc.next());
		System.out.println("学生基本信息为:" + student);
		System.out.println("教师的信息为:" + teacher);
		sc.close();	                                                     
	}
}	

2.定义一个抽象(abstract)类,类名为Employee。 Employee的子类有YearWorker、MonthWorker和WeekWorker。YearWorker对象按年领取薪水(每年10万),MonthWorker对象按月领取薪水(每月1万),WeekWorker对象按周领取薪水(每周0.5万,设定一个月4周)。Employee类有一个抽象(abstract)方法:public abstract double earnings();

子类必须重写父类的earnings()方法,给出各自领取每年报酬的具体方式。

有一个Company类,该类用Employee数组作为成员,Employee数组的单元可以是YearWorker对象、MonthWorker对象、WeekWorker对象的上转型对象。程序能输出Company对象一年需要支付的薪水总额。

package step2;



abstract class Employee {
	public abstract double earnings();
}

class YearWorker extends Employee {

	@Override
	public double earnings() {
		return 100000;
	}
	
}

class MonthWorker extends Employee {

	@Override
	public double earnings() {
		
		return 10000*12;
	}
	
}

class WeekWorker extends Employee {

	@Override
	public double earnings() {

		return 5000*4*12;
	}

}

class Company {
	Employee[] employees;
	double salaries = 0;

	Company(Employee[] employees) {
		this.employees = employees;
	}

	public double salariesPay() {
		salaries = 0;
		for (Employee employee : employees) {
            salaries += employee.earnings();
        }
		return salaries;
	}
}

public class HardWork {
	public static void main(String[] args) {
		Employee[] employees = new Employee[20];
		for (int i = 0; i < employees.length; i++) {
			if (i % 3 == 0)
				employees[i] = new WeekWorker();
			else if (i % 3 == 1)
				employees[i] = new MonthWorker();
			else if (i % 3 == 2)
				employees[i] = new YearWorker();
		}
		Company company = new Company(employees);
		System.out.println("公司年工资总额:" + company.salariesPay());
	}
}

3.定义一个接口,其屮包含一个 display() 方法用于显示信息;通知类(Inform)、汽车类(Car)、广告类(Adervise)均要实现该接口,以显示“通知内容”、“汽车油量”、“广告消息”。试编程实现并测试类的设计,创建的对象用接口引用,并通过接口引用变量执行 display() 方法。

package step4;

public class Student{

	private String sno;
	private String sname;
	private String sdept;
	
	public Student() {
		
	}
	public Student(String sno, String sname, String sdept) {
		this.sno = sno;
		this.sname = sname;
		this.sdept = sdept;
	}
	public String getSno() {
		return sno;
	}
	public void setSno(String sno) {
		this.sno = sno;
	}
	public String getSname() {
		return sname;
	}
	public void setSname(String sname) {
		this.sname = sname;
	}
	public String getSdept() {
		return sdept;
	}
	public void setSdept(String sdept) {
		this.sdept = sdept;
	}
	
	@Override
	public String toString() {
		return "学号: " + sno + "\t姓名: " + sname + "\t系部: " + sdept ;
        
	}
	
	

}

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1163750.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

配置git并把本地项目连接github

一.配置git 1.下载git&#xff08;Git&#xff09;&#xff0c;但推荐使用国内镜像下载&#xff08;CNPM Binaries Mirror&#xff09; 选好64和版本号下载&#xff0c;全部点下一步 下载完成后打开终端&#xff0c;输入 git --version 出现版本号则说明安装成功 然后继续…

《巴渝小将》少儿电视综艺走进江小白金色黄庄拍摄圆满成功!

巴渝小将&#xff0c;乘风破浪&#xff01; 张扬巴渝魅力&#xff0c;展示少年风采&#xff0c;本期拍摄我们来到了位于江津的江小白金色黄庄。 江小白金色黄庄位于永兴镇黄庄村&#xff0c;是一座充满诗意又不乏童趣的农文旅综合体&#xff0c;基于当地良好的酿酒高粱产业基础…

Diango项目-简易个人博客项目

项目实现功能 在admin后台自定义添加上传文档。对展示在首页的文章分页显示。在首页点击文章的阅读全文按钮可进入该文章全文详情页进行浏览。对文章实现了内容分类何以发布时间进行归档分类。使用django的whoose搜索引擎对全文实现内容的搜索。 项目涉及技术 Mysql Djan…

性价比最高的开放式耳机是哪款、超高性价比开放式耳机

入耳式的耳机堵塞耳道&#xff0c;长时间佩戴耳朵闷闷的很不舒服。很多人更倾向于选择开放式耳机&#xff0c;即使是暴汗耳朵依旧保持通透。今天就来多方位评测一下市面上炙手可热的几款开放式耳机吧 1、西圣开放式耳机 推荐指数&#xff1a;★★★★★ 官方售价&#xff1a…

gtsam初探以及结合LIO-SAM算法的一些理解

概述 GTSAM&#xff08;Georgia Tech Smoothing and Mapping&#xff09;是基于因子图的C库&#xff0c;本篇基于GTSAM对因子图优化做一个简单了解和梳理&#xff0c;并以LIO-SAM为例进一步分析因子图优化在SLAM中的应用。 参考链接&#xff1a; [0]gtsam官方文档 [1]https:/…

NEFU数字图像处理(3)图像分割

一、图像分割的基本概念 1.1专有名词 前景和背景 在图像分割中&#xff0c;我们通常需要将图像分为前景和背景两个部分。前景是指图像中我们感兴趣、要分割出来的部分&#xff0c;背景是指和前景不相关的部分。例如&#xff0c;对于一张人物照片&#xff0c;人物就是前景&…

✔ ★【备战实习(面经+项目+算法)】 11.2学习

✔ ★【备战实习&#xff08;面经项目算法&#xff09;】 坚持完成每天必做如何找到好工作1. 科学的学习方法&#xff08;专注&#xff01;效率&#xff01;记忆&#xff01;心流&#xff01;&#xff09;2. 每天认真完成必做项&#xff0c;踏实学习技术 认真完成每天必做&…

leetCode 2915. 和为目标值的最长子序列的长度 + 动态规划 +01背包 + 空间优化 + 记忆化搜索 + 递推

2915. 和为目标值的最长子序列的长度 - 力扣&#xff08;LeetCode&#xff09; 给你一个下标从 0 开始的整数数组 nums 和一个整数 target 。返回和为 target 的 nums 子序列中&#xff0c;子序列 长度的最大值 。如果不存在和为 target 的子序列&#xff0c;返回 -1 。子序列 …

开放式耳机百元机哪个好、平价又好用的开放式耳机

开放式耳机最近一两年越来越受欢迎&#xff0c;市场上不同形态的非入耳式耳机都有&#xff0c;从骨传导&#xff0c;夹耳式到气传导等等都有。开放式耳机的好处有很多&#xff0c;非入耳式&#xff0c;不伤耳朵&#xff0c;佩戴更舒适更安全。今天就来和大家聊聊开放式耳机百元…

C语言跟着郝斌学到指针,MDK搭建了,为什么越学越不懂?

今日话题&#xff0c;一学生说C语言跟着郝斌学到指针&#xff0c;MDK搭建了&#xff0c;为什么越学越不懂&#xff1f;在学习STM32时&#xff0c;熟练使用库函数是非常关键的一步。我最初使用了野火的教材&#xff0c;虽然内容详尽&#xff0c;但对于初学者来说可能显得有些冗长…

《C语言从入门到精通》:入门容易,精通难,C语言也不例外

《C语言从入门到精通》&#xff1a;入门容易&#xff0c;精通难&#xff0c;C语言也不例外 C语言&#xff0c;容易上手&#xff0c;难以精通。它是一把双刃剑&#xff0c;既打开了编程世界的大门&#xff0c;又需要耐心与热情。无论是初学者还是专业人士&#xff0c;都需不断钻…

uniapp 离线打包 google 登录

官方文档&#xff1a; Oauth 模块 | uni小程序SDK 其中有 clientid 和反向url clientid 是 xxxx.apps.googleusercontent.com 反向url 是 com.googleusercontent.apps.xxx

早安心语微语早读,保持活力,偶尔撤退,时常欢喜,便是幸福的一生

1、单薄的人生&#xff0c;厚重的生命&#xff0c;我们总会遇到岁月的阳光和阴霾&#xff0c;路过生命的欢愉和遗憾。保持活力&#xff0c;偶尔撤退&#xff0c;时常欢喜&#xff0c;便是幸福的一生。 2、人活着不容易&#xff0c;别把自己&#xff0c;太亏欠&#xff1b;别让…

【23真题】难度Top1,没实力别硬上!

今天分享的是23年南京大学851的信号与系统试题及解析。 本套试卷难度分析&#xff1a;22年南京大学851考研真题&#xff0c;我也发布了&#xff0c;戳这里自取&#xff01;上岸平均分为105-120分&#xff01;迄今为止所做的所有23真题&#xff08;共22套&#xff09;Top1难度&…

选择适合的在线数据库设计工具,值得收藏!

最好的数据库设计工具&#xff0c;可以构建您需要任何数据库类型的数据库&#xff0c;并且可操作性简单易上手。数据库设计工具可以设计数据库架构、定义表结构、建立关系图&#xff0c;以便轻松理解数据库内容。 选择最适合你的工具 在选择数据库设计工具时&#xff0c;需要考…

【1++的Linux】之信号(二)

&#x1f44d;作者主页&#xff1a;进击的1 &#x1f929; 专栏链接&#xff1a;【1的Linux】 文章目录 一&#xff0c;信号的保存二&#xff0c;信号处理1. 信号处理的时间 一&#xff0c;信号的保存 我们在上一篇文章中讲述了信号的概念和信号的产生&#xff0c;并且我们知道…

你写的Python代码到底多快?这些测试工具了解了解

当我们写完一个脚本或一个函数&#xff0c;首先能保证得到正确结果&#xff0c;其次尽可能的快&#xff08;虽然会说Py慢&#xff0c;但有的项目就是得要基于Py开发&#xff09; 本期将总结几种获取程序运行时间的方法&#xff0c;极大的帮助对比不同算法/写法效率 插播&…

【Python工具】简介cmd安装pip及常见错误

简介cmd安装pip以及第三方库 1 检查电脑是否安装pip常用pip命令1.1 未设置环境配置1.2 未安装pip 2 常见错误2.1 Requirement already satisfied 参考 pip是Python中最常用的包管理工具&#xff0c;也是最常用的在线安装方法。 命令如下&#xff1a;package_name就是你所需要安…

软件测试报告所需周期和费用简析

软件测试报告是在软件开发和测试过程中生成的重要文档之一。它提供了对软件系统经过全面测试后的状态和质量的详细描述&#xff0c;以记录软件测试的过程和结果。 生成一个完整的测试报告需要根据软件项目的规模和复杂性来确定时间。较大规模和复杂的软件项目可能需要更长的时…