9、接口
接口的定义格式:
interface 接口名称
{
全局常量;
抽象方法;
}
示例:
interface IEat
{
//public abstract void eat(); 接口中只能定义抽象方法
void eat(); //这样写,跟public abstract void eat();是一样的(即,在接口中定义方式没有声明修饰符,则默认为public abstract)
//public static final int NUM = 10; 在接口中定义一个常量
int NUM = 10; //这样写,跟public static final int NUM = 10;是一样的
}
interface ISleep extends IEat
{
void sleep();
}
注意,上面定义接口的时候Eat和Sleep前面加一个I,这样人们看着这个名字就知道这是一个接口。
interface IRun
{
void run();
}
//接口之间可以多继承,但类只是单继承,因为接口没有实现
interface ISleep extends IEat, IRun
{
void sleep();
}
public class a
{
public static void main(String[] args)
{
Girl mm = new Girl("MM");
mm.eat();
mm.sleep();
mm.run();
mm.print();
}
}
interface IEat
{
//public abstract void eat(); 接口中只能定义抽象方法
void eat(); //这样写,跟public abstract void eat();是一样的(即,在接口中定义方式没有声明修饰符,则默认为public abstract)
//public static final int NUM = 10; 在接口中定义一个常量
int NUM = 10; //这样写,跟public static final int NUM = 10;是一样的
public default void print()
{
System.out.println("eat"); //JDK1.8(含)以后的版本可以定义默认的实现方法
}
}
interface IRun
{
void run();
}
//接口之间可以多继承,但类只是单继承
interface ISleep extends IEat, IRun
{
void sleep();
}
class Girl implements/*implements,关键字:实现*/ ISleep, IEat
{
private String name;
public Girl(){}
public Girl(String name)
{
this.name = name;
}
public void sleep()
{
System.out.println("我爱睡觉");
}
public void eat()
{
System.out.println("我是" + name + ",我爱吃猪脚");
}
//因为我们可以看到上面的ISleep接口接入了IRun,所以这里也要写出run方法
public void run()
{
System.out.println("吃完就跑");
}
}
/*
结果:
我是MM,我爱吃猪脚
我爱睡觉
吃完就跑
eat
*/
接口的概念:
1、接口是一组行为的规范、定义,没有实现(JDK1.8默认方法)
2、使用接口,可以让我们的程序更加利于变化
3、接口是面向对象编程体系中的思想精髓之一
4、面向对象设计法则:基于接口编程
接口的使用规则:
(1)定义一个接口,使用interface关键字
(2)在一个接口中,只能定义常量、抽象方法,JDK1.8后可以定义默认的实现方法
(3)接口可以实现多个接口:extends xxx, xxx
(4)一个具体类实现接口使用implements关键字
(5)一个类可以实现多个接口
(6)抽象类实现接口可以不实现接口的方法
(7)在接口中定义的方法没有声明访问修饰符时,默认为public
(8)接口不能有构造方法
(9)接口不能被实例化
面向对象设计原则:
(1)对修改关闭,对扩展开放
(2)面向接口编程