/*部分内容来自网络*/
初期理解,可以认为是一个特殊的抽象类。当抽象类中的方法都是抽象的,那么该类可以通过接口的形式来表示。
class用来定义类,而interface用来定义接口。接口定义时,格式特点:
(1)接口中常见定义:常量、抽象方法。
(2)接口中的成员都有固定修饰符。
常量:public static final
方法:public abstract
记住:接口中的成员都是public的
接口:是不可以创建对象的,因为有抽象方法。
需要被子类实现,子类对接口的抽象方法全部覆盖后,子类才可以实例化。否则子类是一个抽象类。
接口可以允许多实现,即一个类可以实现多个接口。而子类不能继承多个父类。
原因如下:
(1)接口中的方法都是抽象的方法,没有方法体,即使子类实现的多个接口中有相同的抽象方法,也没有关系,因为没有方法体,抽象方法是无意义的。在子类中实现时直接重写抽象方法就可以覆盖所有重名的抽象方法。
(2)子类如果继承多个父类,多个父类中可能出现同名的非抽象方法,在调用父类方法时,不知道要调用哪一个,会出现异常。所以java不允许多继承。
但是java允许多实现。
类与类之间是继承关系(不支持多继承)
类与接口之间是实现关系(支持多实现)
接口与接口之间是继承关系(支持多继承)
基本功能(基本方法)定义在类中,扩展功能定义在接口中。
class Fu
{
private String name;
private double pay;
Fu(String name,double pay)
{
this.name=name;
this.pay=pay;
}
public void show()
{
System.out.println("hello");
}
}
interface Inter
{
public static final String name="john";//接口中的变量全部用public static final来修饰
public abstract void show();//接口中的方法全部用public abstract来修饰
public abstract void show2();//接口中的方法全部为抽象方法(这一点是与抽象类的不同之处),接口是一种特殊的抽象类。
}
interface Inter2
{
public abstract void show();
public abstract void show1();
}
class InterfaceDemo extends Fu implements Inter,Inter2
{
private String num;
InterfaceDemo(String name,double pay,String num)
{
super(name,pay);
this.num=num;
}
public void show()
{
System.out.println(this.name+"\n"+this.num);
}
public void show2()
{
System.out.print(this.pay);
}
public void show1(){}
public static void main(String args[])
{
InterfaceDemo demo=new InterfaceDemo();
demo.InterfaceDemo("john",3456,"123");
demo.show();
demo.show2();
}
}