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**********************************

原文地址:https://www.cnblogs.com/hongten/p/2133980.html