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