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