Java接口,继承和多态,包装类,数字处理类

一、 实验目的

1、熟练掌握各种包装类。

2、熟练掌握各种数字处理类。

3、熟练掌握类的继承

4、掌掘Object类中的几个重要方法

6、掌握对象类型的转换

7、掌握使用instanceof操作符刊断对象类型

8、掌握方法的重载

9、掌握多态枝术

10、掌握使用抽象类与接口封装性,多态性的概念

二、实验内容与要求

1、实现以下类:

1) 定义一个学生类Student,包括:

成员变量:no:学号

name:姓名

sex:性别

math:数学成绩

java:java成绩

english:英语成绩

mean:平均分数

成员方法:无参数构造方法 Student();

​ 有参数构造方法Student(String no,String name,boolean sex,float math,float java,float english);

​ 计算平均分的方法void calMean();

​ 重写toString()方法,输出学生的所有信息;

​ 实现接口Comparable中的compareTo(Object stu)方法;

2)编写个测试类Test,主方法main中,随机产生100个学生的对象(包括顺序学号,随机姓名,随机性别,随机分数),计算每个学生的平均分,利用Arrays类对100个学生对象的平均分排序,输出排序前,后的100个学生对象的所有信息。

2、定义以下类:

1)抽象类ElectricalEquipment

成员变量:name: 电器名字

​ price:电器价格

​ producer:生产商

成员方法:

抽象方法:function ():具体功能如:收音机的功能是“收听节目”,电视功能是“收看节目”

无参数构造方法,有参数构造方法

重写toString()方法

2)定义个信号signal接口,包括一个方法reciveSignal (); 收音机输出“接受无线电信号”,电视输出“有线信号”

3)定义收音机Radio类,它是ElectricalEquipment的子类,同时实现了signal接口,

4)定义电视机TV类,它是ElectricalEquipment的子类,同时实现了signal接口

5)定义测试类Test, 实现:

a)生成一个Radio对象,一个TV对象,分别输出两个对象。

b)利用上转型对象输出两个对象的功能;

c)利用接口回调输出两个对象接受的什么信号。

三、实验结果

1.

package com;
import java.util.Random;
interface Comparable
{
	public void compareTo(Object stu);
}
class Student {
	char no;
	char name;
	boolean sex;
	float math;
	float java;
	float english;
	float mean;
	public Student() {	
	}
	
	public Student(char no,char name,boolean sex,float math,float java,float english) {
		this.no=no;
		this.name=name;
		this.sex=sex;
		this.math=math;
		this.java=java;
		this.english=english;
	}
	public void calMean() {
	     this.mean=(math+java+english)/3;
	}
}
public class shijian45 {
	public static void main(String[] args) {
		// TODO 自动生成的方法存根
		 Student[] Array= new Student[100];
		 @SuppressWarnings("unused")
		Student Arraytemp= new Student();
		int n=5,i;
		for(i=0;i<n;i++) {
			Array[i]=new Student();
			Random rno= new Random();
		    int d = rno.nextInt(100);
		    Array[i].no= (char)d;
		    Random rname= new Random();
		    int e = rname.nextInt(100) +100;
		    Array[i].name= (char)e;
		    Random rsex= new Random();
		    int f = rsex.nextInt(100) +1;
		    Array[i].sex= (d==1);
		    @SuppressWarnings("unused")
			Random rmath= new Random();
		    Array[i].math = rsex.nextInt(50) +100;
		    @SuppressWarnings("unused")
			Random rjava= new Random();
		    Array[i].java= rsex.nextInt(50) +100;
		    @SuppressWarnings("unused")
			Random renglish= new Random();
		    Array[i].english= rsex.nextInt(50) +100;
		    Array[i].mean=(Array[i].math+Array[i].java+Array[i].english)/3 ;
		}
		System.out.println("排序前");
		for(i=0;i<n;i++) {
			System.out.println("xh="+Array[i].no+" xm="+Array[i].name+" xb="+Array[i].sex+" math="+Array[i].math+" java="+Array[i].java+" english="+Array[i].english+" pj="+Array[i].mean);
		}
		for(i=0;i<n-1;i++) {
			int index = i;
			for(int j = i+1;j<n;j++) {
				if(Array[index].mean<Array[j].mean) {
					Arraytemp=Array[index];
					Array[index]=Array[j];
					Array[j]=Arraytemp;
				}
			}
		}
		System.out.println("排序后");
		for(i=0;i<n;i++) {
			System.out.println("xh="+Array[i].no+" xm="+Array[i].name+" xb="+Array[i].sex+" math="+Array[i].math+" java="+Array[i].java+" english="+Array[i].english+" pj="+Array[i].mean);
		}
	}
}

2.

package com;

abstract class ElectricalEquipment{
	String name;
    double price;
    String producer;
    ElectricalEquipment(){
    }
    ElectricalEquipment(String name,double price,String producer){
		this.name=name;
		this.producer=producer;
		this.price=price;
    }
    public abstract void function();
}
interface signal{
    // 声明变量
    // 抽象方法
	public void reciveSignal ();
}
class Radio extends ElectricalEquipment implements signal{
	Radio(String name,double price,String producer){
		this.name=name;
		this.producer=producer;
		this.price=price;
	}
	@Override
	public void function() {
		// TODO 自动生成的方法存根
		System.out.println("收听节目");
	}

	@Override
	public void reciveSignal() {
		System.out.println("接受无线电信号");
	}
}
class TV extends ElectricalEquipment implements signal{
	TV(String name,double price,String producer){
		this.name=name;
		this.producer=producer;
		this.price=price;
	}
	@Override
	public void function() {
		// TODO 自动生成的方法存根
		System.out.println("收看节目");
	}
	@Override
	public void reciveSignal () {
		System.out.println("接受有线信号");
	}
}
public class shijian46 {
	public static void main(String[] args){
		TV tv=new TV("rew",234,"uyuuyi");
		Radio radio=new Radio("daasd",111,"asda");
		
		ElectricalEquipment e=tv;
		tv.function();
		e=radio;
		e.function();
		signal s=tv;
		tv.reciveSignal();
		s=radio;
		s.reciveSignal();
	}
}
posted @ 2026-01-06 21:54  东血  阅读(0)  评论(0)    收藏  举报

载入天数...载入时分秒...