接口
/**
* 测试接口
*
* @author 86176
*
*/
public interface MyInterface {
//接口中只有:常量、抽象方法!
/*public static final 接口中常量定义时,写或不写都是这样*/String MAX_GREAD = "BOSS";
int MAX_SPEED = 120;
//方法必须是public,其他都不行
public void test01();
public int test02(int a, int b);
}
public class MyClass implements MyInterface {
@Override
public void test01() {
//MyInterface.MAX_GREAD;
System.out.println("test01");
}
@Override
public int test02(int a, int b) {
System.out.println("MyClass.test02()");
return 0;
}
}
描述:飞机,石头,人的关系?
public interface Flyable {
int MAX_SPEED = 11000;
int MIN_HEIGHT = 1;
/* public abstract */void fly();
}
interface Attack {
void attack();
}
class Plane implements Flyable {
@Override
public void fly() {
System.out.println("飞机依靠发动机飞!");
}
}
class Man implements Flyable {
@Override
public void fly() {
System.out.println("人跳起来,飞!");
}
}
class Stone implements Flyable, Attack {
int weight;
@Override
public void fly() {
System.out.println("被人扔出去!");
}
@Override
public void attack() {
System.out.println("石头攻击!");
}
}
为什么需要接口?接口和抽象类的区别?
-接口就是比“抽象类”还要“抽象”的“抽象类”,可以更加规范的对子类进行约束。全面地专业的实现了:规范和具体实现的分离。
-接口就是规范,定义的是一组规则,体现了现实世界中“如果你是。。。则必须能。。。”的思想。
-接口的本质是契约,定制好后就必须遵守。
-项目的具体需求是多变的,我们必须以不变应万变才能从容开发,此处的不变就是"规范“。因此,开发项目往往都是面向接口编程。
如何定义接口?
-格式:
[访问修饰符] interface 接口名 [extends 父接口1,父接口2....]{
-常量定义 //总是public static final
-方法定义//总是public abstract
}
子类通过implements来实现接口中的规范
接口不能创建实例,但是可用于声明引用变量类型。
public class Test {
public static void main(String[] args) {
Flyable f=new Stone();//只能初始化子类,不能初始化接口
f.fly();
}
}
一个类实现了接口,必须实现接口中所有的方法,并且这些方法只能是public的。
接口支持多继承
public interface InterfaceA {
void aaa();
}
interface InterfaceB{
void bbb();
}
interface InterfaceC extends InterfaceA,InterfaceB{
void ccc();
}
class TestClass implements InterfaceC{
@Override
public void aaa() {
// TODO Auto-generated method stub
}
@Override
public void bbb() {
// TODO Auto-generated method stub
}
@Override
public void ccc() {
// TODO Auto-generated method stub
}