zoukankan      html  css  js  c++  java
  • J2SE 接口 [interface]

    Runner.java

    代码:

    /**
     * 接口
     *  接口 [interface]是抽象方法和常量值的定义的集合
     *  
     *  从本质上讲,接口是一种特殊的抽象类,这种抽象类中只包含常量和方法的定义,而没有变量和方法的实现
     *
     *  接口中所有的方法都是抽象方法,包含的属性值都是常量值
     *
     *  接口中定义的属性必须是: public static final
     *
     *  接口中定义的方法必须是:public abstract
     *
     *  而这些修饰符可以部分或全部省略
     *
     *   下面Runner接口等价于:
     *   public interface Runner{
     *       int id=1;
     *      void strat();
     *      void run();
     *      void stop();
     *   }
     *   
     *
     *
     */
    package com.b510.examples.dao;

    /**
     * @author Hongten
     *
     * @time 2011-8-10 2011
     */
    public interface Runner {

     public static final int id = 1;

     public abstract void start();

     public abstract void run();

     public abstract void stop();
    }

    ***********************************Hongten**********************************

    Animal.java

    代码:/**
     *
     */
    package com.b510.examples.dao;

    /**
     * @author Hongten
     *
     * @time 2011-8-10 2011
     */
    public interface Animal {

     public abstract void eat();
    }

    ***********************************Hongten**********************************

    Swimmer.java

    代码:

    /**
     *
     */
    package com.b510.examples.dao;

    /**
     * @author Hongten
     *
     * @time 2011-8-10 2011
     */
    public interface Swimmer {

     public abstract void swim();
    }

    ***********************************Hongten**********************************

    Person.java

    代码:

    /**
     *
     */
    package com.b510.examples.impl;

    import com.b510.examples.dao.Animal;
    import com.b510.examples.dao.Runner;
    import com.b510.examples.dao.Swimmer;

    /**
     * @author Hongten
     *
     * @time 2011-8-10 2011
     */
    public class Person implements Runner, Swimmer, Animal {

     @Override
     public void run() {
      System.out.println("这是重写Runner接口中的run()方法");

     }

     @Override
     public void start() {
      System.out.println("这是重写Runner接口中的start()方法");

     }

     @Override
     public void stop() {
      System.out.println("这是重写Runner接口中的stop()方法");

     }

     @Override
     public void swim() {
      System.out.println("这是重写Swimmer接口中的swim()方法");

     }

     @Override
     public void eat() {
      System.out.println("这是重写Animal接口中的eat()方法");

     }

    }

    ***********************************Hongten**********************************

    测试类:

    Test.java

    代码;

    /**
     *
     * 接口特性总结:
     *   通过接口可以实现不相关类的相同行为,而不需要考虑这些类之间的层次关系;
     *   
     *   接口可以被多重实现;
     *  
     *   接口可以继承其他的接口,并添加新的属性和抽象方法,接口可以多重继承;
     *
     *    如:public interface A{
     *      public abstract void a();
     *     }
     *
     *     public interface B{
     *      public abstract void b();
     *     }
     *
     *     public interface C implements A,B{
     *      public abstract void a(); 
     *      public abstract void b();
     *      public abstract void c();
     *     }
     *
     *
     */
    package com.b510.examples.action;

    import com.b510.examples.dao.Animal;
    import com.b510.examples.dao.Runner;
    import com.b510.examples.dao.Swimmer;
    import com.b510.examples.impl.Person;

    /**
     * @author Hongten
     *
     * @time 2011-8-10 2011
     */
    public class Test {

     /**
      * @param args
      */
     public static void main(String[] args) {

    System.out.println("*************多态***************");
      Runner person = new Person();
      person.start();
      person.run();
      person.stop();
      System.out.println("**************多态**************");
      Swimmer sPerson = new Person();
      sPerson.swim();
      System.out.println("*************多态***************");
      Animal aPerson = new Person();
      aPerson.eat();

     }

    }

    ***********************************Hongten**********************************

    运行效果:

    *************多态***************

    这是重写Runner接口中的start()方法
    这是重写Runner接口中的run()方法
    这是重写Runner接口中的stop()方法
    **************多态**************
    这是重写Swimmer接口中的swim()方法
    *************多态***************
    这是重写Animal接口中的eat()方法

    ***********************************Hongten**********************************

    今天焕然大悟,终于把一直困惑的问题给搞清楚了,在原来一直不知道interface中的方法是抽象的,

    所以,一直以来都认为,我学了abstract这个东东,但是我好像都没有用到……当然今天看来,这只是

    自己的想法而已,其实,我早就在用这个一直"隐藏"的abstract了。因为这样,所以做了这个笔记,

    读者如果你也和原来的我一样的话,希望你也像我今天一样焕然大悟!!

                                      -----Hongten

    ***********************************Hongten**********************************

  • 相关阅读:
    从客户端(Content="<p>666</p>")中检测到有潜在危险的 Request.Form 值。
    VS插件集
    Carmack在QUAKE3中使用的计算平方根的函数
    自动匹配HTTP请求中对应实体参数名的数据(性能不是最优)
    webapi单元测试时出现的ConfigurationManager.ConnectionStrings为空错误
    @@IDENTITY在加触发器时返回错误的ID值
    Protobuf完整实例
    Apache配置多个监听端口和不同的网站目录的简单方法[转]
    ThinkPHP 小技巧
    复选框 ajax取得后台页面
  • 原文地址:https://www.cnblogs.com/hongten/p/2133980.html
Copyright © 2011-2022 走看看