接口:Xeon(故意在接口中也创建了一个属性,)
package testone;
public interface Xeon {
public String num=null;
public String toString();
public String play();
}
实现类:smallXeon、middleXeon
package testone; public class smallXeon implements Xeon{ String name=null; int num=0; public void SetSex(int number){ this.num++; } public String play(){ return "play piano!"; } public void setName(String name) { this.name=name; } }
package testone; public class middleXeon implements Xeon { public String toString(){ return "you are a middle watermelon!"; } public String play(){ return "play violin!"; } }
说明: <1>实现类必须实现接口的所有方法,但是实现类可以有接口没有的方法(方法数量:实现类>接口),比如smallXeon的setSex方法;而且实现类的方法修饰符的权限必须大于接口的方法修饰符,也就是实现类的方法的可见性>接口的方法的可见性。
<2>实现类可以有自己的属性,比如smallXeon有num,name属性。
<3>Xeon cp0=new smallXeon();这里的cp0对象只能使用Xeon接口里面声明了的方法,当然了这里比如使用cp0.play()会调用smallXeon类里的play的实现。
<4>为什么使用接口,最大目的也应该是代码重用吧,对于业务逻辑一样的类(内部实现不一样),可以直接定义接口,然后不同的业务使用不同的实现类就好了。
<5>接口成员总是公有的(包括成员变量,成员方法),接口里面也可以声明属性,但是必须public final static修饰,或者默认这样,所以就是常量了,一般不在接口里面声明属性。