头歌实验平台Java实验四

实验四 Java接口

第1关:接口练习

任务描述
本关任务:定义一个Animal接口,并按要求实现接口。

要求:
Animal接口包含三个方法:

  • public void Speak(); //说话
  • public void Walk(); //行走方式
  • public String toString();//返回动物名称

定义Centipede(蜈蚣)类,实现Animal接口。例如:
void Speak();方法显示“不发声”
void Walk(); 方法显示“不知道有多少条腿走路”
String toString(); 方法返回“蜈蚣”

定义Dog(狗)类,实现Animal接口。

定义People(人)类,实现Animal接口。

定义Chinese(中国人)类,继承People(人)类。

定义Britisher(英国人)类,继承People(人)类。

最后设计一个类来测试你的所有的程序,通过该例充分理解接口、继承、多态。

Animal.java

package step2;
import java.util.*;
//定义Animal接口
public interface Animal
{
    public void Speak();
    public void Walk();
    public String toString();
}

Centipete.java

package step2;
//完成Centipede类
import java.util.*;
public class Centipede implements Animal
{
    @Override
    public void Speak()
    {
        System.out.println("不发声");
    }
    @Override
    public void Walk()
    {
        System.out.println("不知道有多少条腿走路");
    }
    @Override
    public String toString()
    {
        return "蜈蚣";
    }
}

Dog.java

package step2;
//完成Dog类
public class Dog implements Animal
{
    @Override
    public void Speak()
    {
        System.out.println("不发声");
    }
    @Override
    public void Walk()
    {
        System.out.println("不知道有多少条腿走路");
    }
    @Override
    public String toString()
    {
        return "狗";
    }
    

}

People.java


package step2;
//完成People类
public class People implements Animal
{
    @Override
    public void Speak()
    {
        System.out.println("不发声");
    }
    @Override
    public void Walk()
    {
        System.out.println("不知道有多少条腿走路");
    }
    @Override
    public String toString()
    {
        return "人";
    }
}

Chinese.java

package step2;
//完成Chinese类
public class Chinese extends People
{
   public void Speak()
    {
        System.out.println("不发声");
    }
    public void Walk()
    {
        System.out.println("不知道有多少条腿走路");
    }
    public String toString()
    {
        return "中国人";
    } 
}

Britisher.java

package step2;
//完成Britisher类
public class Britisher extends People
{
    public void Speak()
    {
        System.out.println("不发声");
    }
    public void Walk()
    {
        System.out.println("不知道有多少条腿走路");
    }
    public String toString()
    {
        return "英国人";
    }
}

第2关:定义一个MyList接口,并使用数组的方法来实现接口

任务描述
要求:

MyList接口包含六个方法:

  • void add(Object obj):往列表尾部添加对象
  • Object get(int index):从列表中获取索引为i的对象
  • void clear():清空所有的对象
  • boolean isEmpty():判断列表中是否有对象
  • int size():获取列表中对象的个数
  • int capacity():所分配的空间大小

MyObjectArray类实现MyList接口,内部以数组的方式实现,要求:

  • 构造函数MyObjectArray(int incSize):参数incSize为数组初始化大小和空间的增量。若用户调用incSize非法,则设为默认值5。
  • 当调用add()方法往试图往MyObjectArray中增加对象时,如果内部数组已满,则增加数组大小,增量为incSize。
  • 调用clear()方法可以清空所有通过add()方法加入的对象。
  • 调用get(int index)方法时,如果传入的参数非法,则返回null对象,否则返回对应的对象。

MyDoubleArray类也实现ReList接口,内部依旧通过数组实现,要求:

  • 构造函数MyDoubleArray(int initSize):参数initSize表示数组的初始化大小。若用户调用initSize非法,则设为默认值10。
  • 当调用add()方法往MyDoubleArray列表里面增加对象时,如果其内部数组已满,则将数组的长度变为当前长度的2倍。
  • 其他方法和MyObjectArray一致

最后设计一个类来测试你的MyObjectArray和MyDoubleArray类,看看这两个类是否能在不破坏使用者代码的情况下相互替换。
提示:
增加数组长度的方法:使用java.util.Arrays.copyOf()方法,用法请查阅Java API文档。

MyList.java

package step1;
//在此写接口MyList
public interface MyList
{
    void add(Object obj);
    Object get(int index);
    void clear();
    boolean isEmpty();
    int size();
    int capacity();
}

MyObjectArray.java

package step1;
import java.util.Arrays;
//在此写MyObjectArray类
public class MyObjectArray implements MyList
{
    private Object[] array = null;
    private int cindex = 0;
    private int incSize = 0;

    public MyObjectArray()
    {

    }

    public MyObjectArray(int incSize)
    {
        if(incSize < 0)
        {
            this.incSize = 5;
        }
        else{
            this.incSize = incSize;
        }
        this.array = new Object[this.incSize];
    }
    @Override
    public void add(Object obj)
    {
        if(cindex == array.length)
        {
            array = Arrays.copyOf(array,array.length + incSize);
        }
        array[cindex] = obj;
        cindex++;
    }
    @Override
    public void clear()
    {
        this.array = new Object[5];
        cindex = 0;
    }
    @Override
    public boolean isEmpty()
    {
        boolean flag = false;
        if(array[0] == null)
        {
            flag = true;
        }
        return flag;
    }
    @Override
    public int size()
    {
        return cindex;
    }
    @Override
    public int capacity()
    {
        return this.array.length;
    }
    @Override
    public Object get(int index)
    {
        Object obj = null;
        if(index > 0 && index < cindex)
        {
            obj = this.array[index];
        }
        return obj;
    }
}

MyDoubleArray.java

package step1;
import java.util.Arrays;
//在此写MyDoubleArray类
public class MyDoubleArray implements MyList
{
    private Object[] array = null;
    private int cindex = 0;
    private int initSize = 0;
    public MyDoubleArray(){}
    public MyDoubleArray(int initSize)
    {
        if(initSize < 0)
        {
            this.initSize = 10;
        }
        else
        {
            this.initSize = initSize;
        }
        array = new Object[this.initSize];
    }
    @Override
    public void add(Object obj)
    {
        if(this.cindex == array.length)
        {
            array = Arrays.copyOf(array,array.length + array.length);
        }
        array[cindex] = obj;
        cindex++;
    }
    @Override
    public Object get(int index)
    {
        Object obj = null;
        if(index > 0 && index < this.cindex)
        {
            obj = array[index];
        }
        return obj;
    }
    @Override
    public void clear()
    {
        array = new Object[10];
        cindex = 0;
    }
    @Override
    public boolean isEmpty()
    {
        boolean flag = false;
        if(array[0] == null)
        {
            flag = true;
        }
        return flag;
    }
    @Override
    public int size()
    {
        return this.cindex;
    }
    @Override
    public int capacity()
    {
        return this.array.length;
    }
}
  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一只菜鸟呀

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值