• 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 接口与抽象类何时用

    • 如果实现接口的类中没有实现接口中的全部方法,必须将此类定义为抽象类
    • 抽象类是对于一类事物的高度抽象,其中既有属性也有方法
    • 接口是对方法的抽象,也就是对一系列动作的抽象
    • 当需要对一类事物抽象的时候,应该是使用抽象类,好形成一个父类
    • 当需要对一系列的动作抽象,就使用接口,需要使用这些动作的类去实现相应的接口
  • 相关阅读:
    对象直接量
    js学习类
    jquery.js与sea.js综合使用
    拥抱模块化的JavaScript
    匿名函数与闭包
    js对象如何合并?
    Web.config配置文件详解
    javascipt自定义命名空间、静态类、实例对象
    jQuery源码的基础知识
    企业架构/企业开发 [Enterprise architecture / Enterprise Development]
  • 原文地址:https://www.cnblogs.com/dongxuelove/p/13029344.html
Copyright © 2020-2023  润新知