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

浙公网安备 33010602011771号