zoukankan      html  css  js  c++  java
  • Java-接口interface(另类抽象)给你方法,要用才设置

    1.1 特点

    • 用interface定义
    • 接口中所有成员变量都默认是由public static final修饰的
    • 接口中所有方法都默认是由public abstract修饰的
    • 接口没有构造器
    • 接口采用多层继承机制
    • java本身不支持多重继承,我们一般使用接口来做到多重继承的效果

    1.2 定义举例

    public interface Runner{
        (public static final) int ID=1;
        (public abstract) void start();
        (public abstract) void run();
        (public abstract) void stop();
    }
    public interface Player{
        (public static final) int AD=1;
        (public abstract) void begin();
        (public abstract) void play();
        (public abstract) void end();
    }
    

    1.3 接口实现举例

    子类可以实现多个接口,多个接口用逗号隔开
    public class Test implements Player,Runner{
        public void start(){
    
        }   
        public void begin(){
    
        }
    }
    

    1.4 接口可以继承接口

    public interface StudentPlayer extends Player{
    
    }
    

    1.5 继承+实现

    • 如果一个类既继承父类,又实现接口,那么先继承,再实现

    1.6 接口与抽象类

    • 接口能做的事用抽象类也能做,为什么用接口?
      • 新增方法上
        • 抽象类新增抽象方法存在的问题
          • 子类继承父类 父类新增抽象方法 则子类必须实现父类新增的抽象方法或者子类改为抽象类
        • 接口新增抽象方法
          • 子类继承父类 父类新增接口 而子类只需按需要新增抽象方法
      • 用java描述会唱歌的厨子是个老师
        • 分析:不用接口就是使用继承传递
          • 从Person类—Singer类—Cook类-Teacher类
      • 使用接口描述 Teacher类-Person类 然后Cooking接口,Sing接口实现接口方法

    1.7 举例如下

    abstract class Person
        int age
        String name
        int sex
        abstract void showinfo()
    ----------------------------
    interface Cooking
        void fry()
    ----------------------------
    interface Sing
        void singing()
    ----------------------------
    class SCTeacher
        String course
        void showinfo()
        void fry()
        void singing()
    

    1.8 对象的多态

    一个类可以实现多个无关接口
    Cooking c=new SCTeacher()
    c.fry()
    Sing s=new SCTeacher()
    s.singing()
    

    1.9 接口与抽象类何时用

    • 如果实现接口的类中没有实现接口中的全部方法,必须将此类定义为抽象类
    • 抽象类是对于一类事物的高度抽象,其中既有属性也有方法
    • 接口是对方法的抽象,也就是对一系列动作的抽象
    • 当需要对一类事物抽象的时候,应该是使用抽象类,好形成一个父类
    • 当需要对一系列的动作抽象,就使用接口,需要使用这些动作的类去实现相应的接口
  • 相关阅读:
    Future和Callable的使用
    Tiny Jpeg Decoder (JPEG解码程序) 源代码分析 1:解码文件头
    jQuery 表格排序插件 Tablesorter 使用
    jQuery 表单验证插件 jQuery Validation Engine 使用
    jQuery 文本编辑器插件 HtmlBox 使用
    开源视频质量评价工具: IQA
    hql 语法与详细解释
    MYSQL常用命令
    C++发送HTTP请求获取网页HTML代码
    编译运行Red5源代码
  • 原文地址:https://www.cnblogs.com/dongxuelove/p/13029344.html
Copyright © 2011-2022 走看看