头歌 实验四 Java接口

目录

第1关:接口练习

任务描述

要求

代码

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

任务描述

代码


第1关:接口练习

任务描述

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

要求
  1. Animal接口包含三个方法:  public void Speak(); //说话  public void Walk(); //行走方式  public String toString();//返回动物名称

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

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

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

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

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

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

代码

Animal.java

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

Centipede.java

package step2;
//完成Centipede类
class Centipede implements Animal{

    @Override
    public void Speak(){
        System.out.print("不发声");
    }

    @Override
    public void Walk(){
        System.out.print("不知道有多少条腿走路");
    }

    @Override
    public String toString(){
        return "蜈蚣";
    }
}

Dog.java

package step2;
//完成Dog类
class Dog implements Animal{
    @Override
    public void Speak(){
        System.out.print("不发声");
    }

    @Override
    public void Walk(){
        System.out.print("不知道有多少条腿走路");
    }

    @Override
    public String toString(){
        return "狗";
    }
}

People.java

package step2;
//完成People类
class People implements Animal{
    @Override
    public void Speak(){
        System.out.print("不发声");
    }

    @Override
    public void Walk(){
        System.out.print("不知道有多少条腿走路");
    }

    @Override
    public String toString(){
        return "人";
    }
}

Chinese.java

package step2;
//完成Chinese类
class Chinese extends People{
    @Override
    public void Speak(){
        System.out.print("不发声");
    }

    @Override
    public void Walk(){
        System.out.print("不知道有多少条腿走路");
    }

    @Override
    public String toString(){
        return "中国人";
    }
}

Britisher.java

package step2;
//完成Britisher类
class Britisher extends People{
    @Override
    public void Speak(){
        System.out.print("不发声");
    }

    @Override
    public void Walk(){
        System.out.print("不知道有多少条腿走路");
    }

    @Override
    public String toString(){
        return "英国人";
    }
}

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

任务描述
  1. MyList接口包含六个方法:  void add(Object obj):往列表尾部添加对象  Object get(int index):从列表中获取索引为i的对象  void clear():清空所有的对象  boolean isEmpty():判断列表中是否有对象  int size():获取列表中对象的个数  int capacity():所分配的空间大小

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

  3. 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(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;
    }
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值