初学Java第十四天

这篇博客主要介绍了Java中的接口,包括接口的定义、特性、实现方式以及接口间的继承。通过示例代码展示了如何创建接口、实现接口以及接口的多实现。此外,还提到了接口在类继承中的作用,以及接口与类的关系。
摘要由CSDN通过智能技术生成

 笔记

1. 接口:

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

   ```java
   //接口的演示
   public class InterfaceDemo {
       public static void main(String[] args) {
           //Inter5 o = new Inter5(); //编译错误,接口不能被实例化
           Inter5 o1 = new Doo(); //向上造型
           Inter4 o2 = new Doo(); //向上造型
       }
   }
   
   //演示接口的语法
   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 say(){} //编译错误,抽象方法不能有方法体
   }
   
   //演示接口的实现
   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(){}
       public void say(){}
   }
   
   //演示接口继承接口
   interface Inter4{
       void show();
   }
   interface Inter5 extends Inter4{
       void test();
   }
   class Doo implements Inter5{
       public void test(){}
       public void show(){}
   }
   
   ```

   

## 精华笔记:

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

## 补充:

1. 类型间关系:

   - 类和类-------------------------继承
   - 接口和接口-------------------继承
   - 类和接口----------------------实现

2. 设计规则:

   - 将所有派生类所共有的属性和行为,抽到超类中----------------------抽共性

   - 若派生类的行为都一样,设计为普通方法

     若派生类的行为都不一样,设计为抽象方法

   - 将部分派生类所共有的属性和行为,抽到接口中

     接口是对继承单根性的扩展-----------------------------------实现多继承

     接口是一个标准、规定----------后期慢慢体会,现在先不需要纠结

3. 如何调错:

   - 快速锁定问题方法:
     - 将方法的调用都注释起来,然后一个一个的放开,放开哪个报错问题就在哪个方法

   - 打桩:System.out.println(数据);


作业

1. 深水炸弹入场:

   参考代码:

   ```java
   package day08;
   import javax.swing.ImageIcon;
   //战舰
   public class Battleship extends SeaObject {
       private int life;
       public Battleship(){
           super(66,26,270,124,20);
           life = 5;
       }
   
       public void move(){
           System.out.println("战舰移动");
       }
   
       public ImageIcon getImage(){
           return Images.battleship;
       }
   
       public Bomb shoot(){
           return new Bomb(this.x,this.y);
       }
   }
   
   package day08;
   import javax.swing.JFrame;
   import javax.swing.JPanel;
   import java.awt.Graphics;
   import java.util.Arrays;
   import java.util.Random;
   import java.util.Timer;
   import java.util.TimerTask;
   import java.awt.event.KeyAdapter;
   import java.awt.event.KeyEvent;
   //整个游戏世界
   public class World extends JPanel {
       public static final int WIDTH = 641;
       public static final int HEIGHT = 479;
   
       private Battleship ship = new Battleship(); //战舰
       private SeaObject[] submarines = {}; //潜艇(侦察潜艇、鱼雷潜艇、水雷潜艇)
       private Mine[] mines = {}; //水雷
       private Bomb[] bombs = {}; //深水炸弹
   
       /** 随机生成潜艇 */
       public SeaObject nextOne(){
           Random rand = new Random();
           int type = rand.nextInt(20);
           if(type<10){
               return new ObserveSubmarine();
           }else if(type<15){
               return new TorpedoSubmarine();
           }else{
               return new MineSubmarine();
           }
       }
   
       private int subEnterIndex = 0;
       /** 潜艇入场 */
       public void submarineEnterAction(){ //每10毫秒走一次
           subEnterIndex++;
           if(subEnterIndex%40==0){ //每400毫秒
               Sea

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值