当前位置: 首页 > 知识库问答 >
问题:

创建应用程序对半旋转木马时出现OOP问题

酆浩邈
2023-03-14

我有一个名为DecrementCarousel的超类,它有一个返回一个名为CarouselRun的对象的方法。CarouselRun有自己的方法,我需要在HalvingCarousel中重写,但我不知道如何重写。DecrementCarousel:

public class DecrementingCarousel {
    static int [] arr ;
    static int capacity;
    int counter = 0;
    boolean alreadyExecuted = false;
    boolean alreadyRun = false;

    public DecrementingCarousel(int capacity) {
        DecrementingCarousel.capacity = capacity;
        arr = new int[capacity];

    }

    public boolean addElement(int element){
        if (alreadyExecuted) return false;
        if (counter < capacity && element > 0) {
            arr[counter] = element;
            counter++;
            return true;
        }
        return false;
    }

    public CarouselRun run(){
        alreadyExecuted = true;
        if (alreadyRun) return null;
        alreadyRun = true;
        return new CarouselRun();

    }


    }

以下是CarouselRun中的方法:

public class CarouselRun {
    int position = 0;

    public int next() {
        int count = 0;
        while (count < arr.length && arr[position %= arr.length] <= 0) {
            position++;
            count++;
        }
        if (count == arr.length) return -1;
        return arr[position++]--;
    }

    public boolean isFinished() {
        for (int var: arr) {
            if (var > 0) return false;
        }
        return true;
    }

}

如何在名为HalvingCarousel的子类中重写这些CarouseRun方法?根据任务,减半转盘只能延长减量转盘

共有1个答案

傅宏恺
2023-03-14

这可以像任何其他简单的继承一样完成。您只需要使用extends关键字和use annotation@Override将HavingCarousel类声明为CarouseRun的子类,以声明您要重写父类的方法。

父类:

public class CarouselRun {
    int position = 0;

    public int next() {
        System.out.println("Carousel run implementation of next()");
        return 1;
    }

    public boolean isFinished() {
        System.out.println("Carousel run implementation of isFinished()");
        return true;
    }

}

儿童班:

java prettyprint-override">public class HalvingCarousel extends CarouselRun{
    @Override
    public int next() {
        System.out.println("HavingCarousel implementation of next()");
        return 2;
    }

    @Override
    public boolean isFinished() {
        System.out.println("HavingCarousel implementation of isFinished()");
        return true
    }
}

看看你的代码,也值得去探索接口而不是继承。接口通常更灵活,一个类可以实现多个接口,而它只能从一个父类继承,所以如果没有强烈的反对理由,应该使用接口,例如,就我所知,你不会拥有的大部分共享代码。

旋转木马的接口

public interface ICarousel {
    public int next();
    public boolean isFinished();
}

CarouseRun实现了以下接口:

public class CarouselRun implements ICarousel {
    int position = 0;

    @Override
    public int next() {
        System.out.println("Carousel run implementation of next()");
        return 1;
    }

    @Override
    public boolean isFinished() {
        System.out.println("Carousel run implementation of isFinished()");
        return true;
    }
}

HalvingCarousel实现接口:

public class HalvingCarousel implements ICarousel{
    @Override
    public int next() {
        System.out.println("HavingCarousel implementation of next()");
        return 2;
    }

    @Override
    public boolean isFinished() {
        System.out.println("HavingCarousel implementation of isFinished()");
        return true;
    }
}

通过阅读您的代码,我相信您仍然需要阅读更多关于基本Java概念的内容,如接口、类、继承、静态与实例属性以及修饰符。例如,我不明白为什么要将数组arr声明为静态,然后在构造函数中对其进行初始化,然后显然要在类CarouselRun的一个完全不相关的实例中访问数组arr。这是行不通的,也没有真正意义,但由于这些是基本概念,我无法在这里解释所有这些。

 类似资料:
  • 所以基本上我想跟滑头做点这样的事...我想有正常的幻灯片,但事情是,是,我想有行动呼吁(按钮)在他们。这通常很容易将按钮与幻灯片一起放入,但有一个溢出:旋转式播放器上隐藏的样式无法取下,否则其他幻灯片会显示出来。我想知道如何才能做到这一点(按钮稍微往外走而不被切断)。 编辑:添加边框到旋转木马,这是真正的问题,我有...维护边框并使底部与边框重叠

  • 本文向大家介绍js实现旋转木马效果,包括了js实现旋转木马效果的使用技巧和注意事项,需要的朋友参考一下 效果图: 代码如下: 以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持呐喊教程!

  • 我想把velocity.js效果结合到Slick Carousel插件中。 slick:http://kenwheeler.github.io/slick/velocity:http://julian.com/research/velocity/ 这很管用,但有一个奇怪的副作用: 这是我现在得到的密码。所以我做了一个效果序列,它是用钩子beforeChange触发的。 当我转到下一张幻灯片时,它起

  • 本文向大家介绍JavaScript实现旋转木马轮播图,包括了JavaScript实现旋转木马轮播图的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了JavaScript实现旋转木马轮播图的具体代码,供大家参考,具体内容如下 html代码段 图片自己添加,或者使用本人的上传照片,拉到最下面即可看见 css代码段: 初始化 reset js代码段: 这个是封装好的的js代码,直接引用即可

  • 我需要添加猫头鹰轮播到我的网站。 我遵循了说明,并使用css作为默认主题。 它工作完美。然后突然(没有更改代码)默认主题停止工作(在导航上没有主题)... 我一直试图修复它,但我失去了我的想法...我甚至将更改还原到我确信它工作的地方! 而且这不是关于浏览器的,因为我甚至把它上传到了我的服务器上... 我的代码: 和JS: 这似乎很奇怪,它曾经工作了一段时间,然后就停止了…… 任何帮助都将是感激的

  • 我想让用户能够滑动轮播如果在一个ipad的肖像模式,而不是滑动如果在横向模式。 我遵循这个例子是为了改变基于肖像/风景的旋转木马的设置,但它只在某种程度上起作用: 下面的代码适用于页面加载,但不适用于方向更改。 我想我必须重新初始化旋转木马,但我不知道如何。我试着,并用新的设置重新初始化它,但似乎不起作用。