JSD-2204-面向对象-接口-潜艇游戏--Day14

1.接口

   - 是一种数据类型(引用数据类型) 
   - 由interface定义
   - 只能包含常量和抽象方法
   - 接口不能被实例化
   - 接口是需要被实现/继承的,实现类/派生类:必须重写所有抽象方法
   - 一个类可以实现多个接口,用逗号分隔,若又继承又实现时,应先继承后实现
   - 接口可以继承接口

   /*
     演示接口的语法:
     1)接口中的数据,默认都是常量。接口中的方法,默认都是抽象的。
     2)接口中的所有内容的访问权限都一定是public的
    */
   interface Inter{
       public static final int NUM = 5;
       public abstract void show();
       int COUNT = 5; //默认public static final
       void test();   //默认public abstract
       //int number; //编译错误,常量必须声明同时初始化
       //void show(){} //编译错误,抽象方法不能有方法体
   }
   
   //演示接口的实现:
   interface Inter1{
       void show();
       void test();
   }
   class Aoo implements Inter1{
       public void show(){} //重写接口中的抽象方法时,权限必须是public的
       public void test(){}
   }
   
   //演示接口的多实现:
   interface Inter2{
       void show();
   }
   interface Inter3{
       void test();
   }
   abstract class Boo{
       abstract void say();
   }
   class Coo extends Boo implements Inter2,Inter3{
       public void show(){}
       public void test(){}
       void say(){}
   }
   
   //演示接口继承接口:
   interface Inter4{
       void test();
   }
   interface Inter5 extends Inter4{ //自己的show()+继承过来的test()
       void show();
   }
   class Doo implements Inter5{
       public void show(){}
       public void test(){}
   }
   
   public class InterfaceDemo {
       public static void main(String[] args) {
           //Inter5 o1 = new Inter5(); //编译错误,接口不能被实例化
           Inter5 o2 = new Doo(); //向上造型
           Inter4 o3 = new Doo(); //向上造型
       }
   }

2.潜艇游戏第八天:

1. 炸弹入场:

   - 炸弹是由战舰发射出来的,所以在Battleship中设计shootBomb()生成炸弹对象

   - 炸弹入场为事件触发的,所以在侦听器中重写keyReleased()按键抬起事件/keyPressed()按键按下事件,判断若按下的是空格键:

     ​    获取炸弹对象obj,bombs扩容,将obj添加到bombs最后一个元素上

2. 战舰移动:

   - 战舰移动为战舰的行为,所以在Battleship中设计moveLeft()左移、moveRight()右移

   - 战舰移动为事件触发的,所以在侦听器的重写keyReleased()中:

     ​    判断若抬起的是左键头,则战舰左移

     ​    判断若抬起的是右键头,则战舰右移

3. 删除越界的海洋对象:

   - 在SeaObject中设计isOutOfBounds()检测潜艇是否越界,在Bomb和Mine中重写isOutOfBounds()检测炸弹和水雷是否越界

   - 删除越界的海洋对象为定时发生的,所以在run()中调用outOfBoundsAction()实现删除越界的海洋对象

     在outOfBoundsAction()中:

     ​    遍历潜艇数组,判断若越界了则:将越界的替换为最后一个元素,缩容

     ​    遍历水雷数组,判断若越界了则:将越界的替换为最后一个元素,缩容

     ​    遍历炸弹数组,判断若越界了则:将越界的替换为最后一个元素,缩容

4. 设计EnemyScore得分接口,ObserveSubmarine和TorpedoSubmarine实现得分接口

   设计EnemyLife得分接口,MineSubmarine实现得命接口

2.1目录展示

2.1.1Battleship类

package cn.tedu.submarine;

import javax.swing.*;
import java.util.Objects;

/**
 * 战舰
 */
public class Battleship extends SeaObject{
    /**
     * 命
     */
    private int life;


    public Battleship() {
        super(66,26,270,124,5);
        this.life = 5;
    }


    /**
     * 战舰移动
     */
    @Override
    public void move
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值