首页 > 编程语言 >实验三 Java类的继承与派生

实验三 Java类的继承与派生

时间:2023-05-18 12:25:30浏览次数:38  
标签:Java String 派生 继承 void class stu Student public

第1关 类的继承

package step1;

import java.util.Scanner;

class Person {
    /********** Begin **********/
    // 自行设计类的实现
    //姓名
    private String name;
    //性别
    private String sex;
    //年龄
    private int age;

    //构造方法
    public Person(String name, String sex, int age){
        this.name = name;
        this.sex = sex;
        this.age = age;
    }

    //重写toString()方法
    public String toString(){
        return name + "," + sex + "," + age;
    }
	/********** End **********/	                                                     
}

class Student extends Person {
    /********** Begin **********/
    // 自行设计类的实现
    //学号
    private String no;
    //入学时间
    private String enter;
    //专业
    private 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;
    }

    //重写toString()方法
    public String toString(){
        return super.toString() + "," + no + "," + enter + "," + major;
    }
	/********** End **********/	                                                     
}

class Teacher extends Person {
    /********** Begin **********/
    // 自行设计类的实现
    //职称
    private String pro;
    //部门
    private String department;

    //构造方法
    public Teacher(String name, String sex, int age, String pro, String department){
        super(name, sex, age);
        this.pro = pro;
        this.department = department;
    }

    //重写toString()方法
    public String toString(){
        return super.toString() + "," + pro + "," + department;
    }
	/********** End **********/		                                                     
}

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关 上转型对象的使用,多态的特性

package step2;

abstract class Employee {
	public abstract double earnings();
}
class YearWorker extends Employee {
	//重写earnings()方法
    /********** Begin **********/
    public double earnings() {
        return 100000;
    }
	/********** End **********/	                                               		
}
class MonthWorker extends Employee {
	//重写earnings()方法
    /********** Begin **********/
    public double earnings() {
        return 10000 * 12;
    }
	/********** End **********/	                                               		
}
class WeekWorker extends Employee {
	//重写earnings()方法
    /********** Begin **********/
    public double earnings() {
        return 5000 * 4 * 12;
    }
	/********** End **********/	                                                		
}
class Company {
	Employee[] employees;
	double salaries = 0;
	Company(Employee[] employees) {
		this.employees = employees;
	}
	public double salariesPay() {
		salaries = 0;
		//计算salaries
		/********** Begin **********/
        for (Employee employee : employees) {
            salaries += employee.earnings();
            }
	    /********** End **********/	                             		
		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关 接口的使用

package step3;

// 自行设计接口和实现类
/********** Begin **********/
// 定义接口
interface Display {
    public void display();
}

// 通知类
class Inform implements Display {
    // 实现 display() 方法
    public void display() {
        System.out.println("通知内容");
    }
}

// 汽车类
class Car implements Display {
    // 实现 display() 方法
    public void display() {
        System.out.println("汽车油量");
    }
}

// 广告类
class Adervise implements Display {
    // 实现 display() 方法
    public void display() {
        System.out.println("广告消息");
    }
}
/********** End **********/	                                                     

public class Lab3_3 {
	public static void main(String[] args) {
		Display[] arr = { new Inform(), new Car(), new Adervise() };
		for (Display d : arr) {
			d.display();
		}
	}
}

第4关 综合应用

Student
package step4;

public class Student {
    /********** Begin **********/
    private String sno;  // 学号
    private String sname;  // 姓名
    private String 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 + "	姓名: " + sname + "	系部: " + sdept;
    }
    /********** End **********/
}
IStudentDAO
 package step4;
 
 public interface IStudentDAO {
	/********** Begin **********/
    void insertStudent(Student student);  // 插入学生信息
    void updateStudent(Student student);  // 更新学生信息
    void deleteStudent(String sno);  // 删除学生信息
    Student findStudentBySno(String sno);  // 根据学号查找学生信息
    void displayAllStudent();  // 显示所有学生信息
    /********** End **********/

}
StudentDAOImpl
package step4;

import java.util.ArrayList;
import java.util.List;

public class StudentDAOImpl implements IStudentDAO {

	static List<Student> students = new ArrayList<Student>();
	
	/********** Begin **********/
    //自行实现所有其它方法
    @Override
    public void insertStudent(Student student) {
        students.add(student);
    }

    @Override
    public void updateStudent(Student student) {
        for (Student stu : students) {
            if (stu.getSno().equals(student.getSno())) {
                stu.setSname(student.getSname());
                stu.setSdept(student.getSdept());
                break;
            }
        }
    }

    @Override
    public void deleteStudent(String sno) {
        for (Student stu : students) {
            if (stu.getSno().equals(sno)) {
                students.remove(stu);
                break;
            }
        }
    }

    @Override
    public Student findStudentBySno(String sno) {
        for (Student stu : students) {
            if (stu.getSno().equals(sno)) {
                return stu;
            }
        }
        return null;
    }
    /********** End **********/

    /**
    * 显示所有学生信息记录参考代码
    */
    @Override
    public void displayAllStudent() {
        if (students.size() > 0) {
            for (Student stu : students) {
                System.out.println(stu);
            }
        }else {
            System.out.println("数据库中无学生记录!");
        }
    }

}
MainClass
package step4;

import java.util.Scanner;

public class MainClass {

	public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);
		StudentDAOImpl studentDAOImpl = new StudentDAOImpl();
		//1. 插入学生信息
		Student stu = new Student();
		stu.setSno(scanner.next());
		stu.setSname(scanner.next());
		stu.setSdept(scanner.next());
		studentDAOImpl.insertStudent(stu);
		//2. 显示插入学生信息
		System.out.println("1. 插入学生信息如下:");
		studentDAOImpl.displayAllStudent();
		//3. 更新学生信息
		stu.setSname("李四");
		stu.setSdept("计算机系");
		studentDAOImpl.updateStudent(stu);
		System.out.println("2. 更新后学生信息如下:");
		System.out.println(studentDAOImpl.findStudentBySno(stu.getSno()));
		//4. 删除指定学生信息
		System.out.println("3. 删除当前学号学生信息:" + stu.getSno());
		studentDAOImpl.deleteStudent(stu.getSno());
		System.out.println("学生信息已删除!");
		//2. 显示插入学生信息
		System.out.println("5. 显示所有学生信息:");
		studentDAOImpl.displayAllStudent();

		scanner.close();
	}
}

标签:Java,String,派生,继承,void,class,stu,Student,public
From: https://www.cnblogs.com/moeyur/p/17407931.html

相关文章

  • java读取excel表格(含有多个sheet)
    publicList<List<List<String>>>uploadExcel(StringfilePath)throwsFileNotFoundException{//两种方式,一种直接上传的文件MultipartFile,一种用本地的文件:FileFilefile2=newFile(filePath);InputStreaminputStream=newFileInputStrea......
  • java中String类
    java的Math和Random类文章目录java中String类String类的本质String类的常用方法String类`加号`编译器优化问题java中String类String类的本质String类是在java.lang下,经过前面的学习可以知道在这个包中的所有类可以直接调用,不需要导包。//自动装箱Stringstr="abc";"abc"就是S......
  • java语言概述
    文章目录java语言概述软件开发介绍软件开发人机交互方式3.2常见DOS命令计算机编程语言的介绍java语言的概述java语言的环境搭建jdk的安装java语言概述软件开发介绍软件开发软件是一系列按照特定顺序组织的计算机数据和指令的集合,有系统软件和应用软件之分。人机交互方式图形化界......
  • Java系列 | IntelliJ IDEA 如何导入和使用一个Jar包
    第一步:创建lib文件创建lib文件,统一管理导入的jar包(若已有lib文件,则直接可以进行第二步)文件名称命名为`lib`第二步:对lib文件建立依赖选择【File】→【ProjectStructure…】 在弹出的页面中选择【Modules】再选择此项目,点击右边的【Dependencies】,再选择下面的小加号,选择......
  • JavaScript中变量类型间的转化
    转到数值字符串布尔nullundefined数值Number()parsenInt()-0,/1,*1Number(true)→1Number(false)→0Number(null)→0Number(undefind)→NaN字符串String()toString()+""String(true)→trueString(false)→falseError:null.toString()Error:undefined.......
  • Java--类/接口作为成员变量
    Java--类/接口作为成员变量成员变量也可以使用自定义的类如何使用String就如何使用自定义的类代码示例Weapon类publicclassWeapon{privateStringcode;publicWeapon(Stringcode){this.code=code;}publicWeapon(){}pu......
  • Java 会是首选的最佳编程语言吗?
    Java是一种非常流行的编程语言,具有广泛的应用领域和强大的生态系统。它被广泛用于企业级应用程序开发、移动应用程序开发、Web应用程序开发、游戏开发等领域。Java的优点包括跨平台性、面向对象、可靠性高、安全性好、易于学习和使用等。因此,在很多情况下,Java是首选的最佳编程......
  • java 判断网络通断
    privatestaticbooleanisInternetOK(String[]urls){System.setProperty("http.proxyHost","192.168.0.100");System.setProperty("http.proxyPort","9999");System.setProperty("https.proxyH......
  • java opencv配置环境变量
    javaopencv配置环境变量Windows开发环境:1、下载路径:opencv官网下载文件,解压,我这里用的版本是3.4.16。2、解压后opencv\build\java\x64目录下的opencv_java3416.dll文件拷到C盘的system32下,opencv\build\java下面的opencv-3416.jar文件复制到本地D盘,新建lib文件夹里面,可以直接通......
  • java正确开发系列:根据日期获取当月天数
    背景:提供任意日期,比如:2023-01-01,计算对应月份的天数 方案一:CalendarCalendarcalendar=Calendar.getInstance();SimpleDateFormatsimpleDateFormat=newSimpleDateFormat("yyyy-MM-dd");calendar.setTime(simpleDat......