实验三 Java类的继承与派生

这篇具有很好参考价值的文章主要介绍了实验三 Java类的继承与派生。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

第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();
	}
}

文章来源地址https://www.toymoban.com/news/detail-449041.html

到了这里,关于实验三 Java类的继承与派生的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • java基础语法-package构造方法-继承-多态

    java中的包 - package 包的主要功能: 包的基本语法 在一个文件中,可以没有包,或者一个包。但是不能出现两个包。 包名一般小写,是为了区分类名,类名一般大写 java中存在不同包相同类的名称,我们可以使用包名进行区分 一般情况下,在使用类的情况下,我们都使用类的

    2024年02月05日
    浏览(31)
  • java import、package与php的namespace和use、requie实质

    首先,java的工作原理是,首先去java的环境变量classpath或者你当前编译目录下去找有没有你需要的类 import、package 后跟着的其实不是文件的真实路径,事实上,它们不需要按照名称组织文件夹,你把他们统统放在一个目录下也可以正常编译运行。将其按照文件路径组织仅仅是

    2024年02月11日
    浏览(33)
  • 类的继承和super关键字的使用(JAVA)

    目录 继承 super   子类的构造方法 final 所有的OOP语言都会有三个特征: 封装(点击可跳转) 继承 多态(点击可跳转) 为什么会有继承呢?可以先看下面的例子:         上面这两个类中的代码很相似因为它们只有最后一个方法不同其它的都相同,这样定义不但导致代码

    2024年02月14日
    浏览(29)
  • 基类与派生类对象的关系 派生类的构造函数

    🐶博主主页: @ᰔᩚ. 一怀明月ꦿ  ❤️‍🔥 专栏系列: 线性代数,C初学者入门训练,题解C,C的使用文章,「初学」C++ 🔥 座右铭: “不要等到什么都没有了,才下定决心去做” 🚀🚀🚀大家觉不错的话,就恳求大家点点关注,点点小爱心,指点指点🚀🚀🚀 目录 🐰

    2023年04月10日
    浏览(31)
  • 高程 | 继承与派生(c++)

    ⭐️ 概念 类的 继承 ,是新的类从已有类那里 得到已有的特性 。 类的 派生 ,从已有类 产生新类的过程 。 原有的类称为基类或父类,产生的新类称为派生类或子类。 直接参与派生出某类的基类称为直接基类,基类的基类甚至更高层的基类称为间接基类。 ⭐️ 语法 class

    2024年02月19日
    浏览(25)
  • c++继承和派生(1)

    目录 1.含义:从不同层面看的,同一种意思 2. 继承的使用场景  1.  共同之处  2.  迭代更新  3.  代码重构  3. 继承的基本语法  4. 继承了什么  1. 查看占用内存大小 2.  使用vs自带的功能查看类的内存分布 布局:  3. 结果  5. protected  -- 子类的特权 1)  三个访问权限  2)

    2024年01月17日
    浏览(33)
  • 4.1派生类的概念

    : 为什么使用继承 所谓继承就是从先辈处得到属性和行为特征。类的继承就是新的类从已有类那里得到已有特征。这样做的目的是:减少代码的重复。 派生类的声明 声明派生类的一般公式 : class 派生类名:[继承方式] 基类名 {         派生类新增的数据成员和成员函数;

    2023年04月22日
    浏览(27)
  • C# 什么是继承和派生

    在 C# 中,继承(Inheritance)是一种机制,它允许一个类(子类)从另一个类(父类)中继承属性和方法。这种关系使得子类可以重用父类的代码,同时可以在子类中添加或修改属性和方法。继承有助于减少代码重复和提高代码的可维护性。 派生(Derivation)是指使用继承机制

    2024年02月09日
    浏览(29)
  • C++中的继承和派生

    C++ 中的继承是类与类之间的关系,是一个很简单很直观的概念,与现实世界中的继承类似,例如儿子继承父亲的财产。 继承(Inheri tan ce) 可以理解为一个类从另一个类获取成员变量和成员函数的过程。例如类 B 继承于类 A,那么 B 就拥有 A 的成员变量和成员函数。 在C++中,

    2024年02月10日
    浏览(31)
  • 2.4C++派生类的函数

    C++ 派生类的构造函数 在C++中派生类的构造函数,必须调用基类的构造函数,来初始化从基类继承的数据成员。 具体有两种形式: 1、默认构造函数 2、带参数的构造函数 上面的我写的代码中,DerivedClass 构造函数的初始化列表中调用了 BaseClass 的构造函数,并将参数 x 传递给

    2024年02月10日
    浏览(25)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包