您的位置:首页 > 编程语言 > Java开发

Java关键字interface【接口】

2017-06-09 00:00 393 查看
/**
*当一个抽象类中的方法全是抽象的,应该用【接口】来表示,
*使用方法:使用关键字interface
*
*接口的定义包括以下两种
*1. 定义变量:接口定义的变量必须有固定的修饰符修饰,public、static、final,所以接口中的变量也被称之为常量
*2. 定义方法:接口定义的方法也有固定的修饰符,public、abstract
*所以接口中成员都是公共的
*
*【接口的特点】
*1. 接口不可以创建对象(跟抽象类一样)
*2. 子类必须覆盖掉接口中所有的抽象方法后,子类才可以实例化,否则子类是一个抽象类(跟抽象类一样)
*/

interface Demo{
public static final int NUM = 3;
public abstract void show1();
public abstract void show2();

}

//定义子类去覆盖接口中的方法。
//类与类的关系是继承,类与接口的关系是实现。通过关键字implements
class DemoImpl implements Demo{  //实现接口类名规范,通常后缀加上Impl
public void show1(){}
public void show2(){}
}

public class interfaceDemo {

public static void main(String[] args) {
DemoImpl d = new DemoImpl();
d.show1();
d.show2();
}

}

/**
* 抽象类中可以不定义抽象方法,原因仅是不让该类创建对象
*
* 下面代码中,接口interfaceShow中有4个方法,假如定义一个类Show1要使用到接口interfaceShow里的show1方法,
* 那么,Show1类将需要覆盖所有的接口的4个方法,实际上有3个方法是不需要的。
*
* 这种设计方式明显是有问题的,复用性很差,
* 为了解决这个问题,我们先定义了一个类InterImpl先去实现接口的所有方法(四个都为空方法即可),
* 然后再创建Show1类去继承InterImpl类,这样只需覆盖需要用到的方法即可,例子中是show1方法
**/

/**
*上面创建的InterImpl类里不知道方法的具体实现内容,只能为了后期子类创建对象方便,而进行空实现。
*所以,InterImpl类创建对象没有意义,直接将其抽象化,这就是没有抽象方法的抽象类
**/

interface interfaceShow{
public abstract void show1();
public abstract void show2();
public abstract void show3();
}

abstract class InterImpl implements interfaceShow{
public void show1(){}
public void show2(){}
public void show3(){}

}

class Show1 extends InterImpl{
public void show1(){
System.out.println("run1");
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: