1.什么是接口:
在Java核心核心技术中描述:在Java程序设计语言中,接口不是类,而是对类的一组需求的描述,这些类遵从接口描述的统一格式进行定义。
接口是Java里的一种抽象类型,在设计模式中会大量的使用,因为它是可复用,可以统一类型等等。非常非常重要
2.接口和类的区别:
- 接口不能用于实例化对象。
- 接口没有构造方法。(因为接口不能被实例化)
- 接口中所有的方法必须是抽象方法。
- 接口不能包含成员变量,除了 static 和 final 变量。
- 接口不是被类继承了,而是要被类实现。
- 接口支持多继承。
3接口的特性:
- 接口中每一个方法也是隐式抽象的,接口中的方法会被隐式的指定为 public abstract(只能是 public abstract,其他修饰符都会报错)。
- 接口中可以含有变量,但是接口中的变量会被隐式的指定为 public static final 变量(并且只能是 public,用 private 修饰会报编译错误)。
- 接口中的方法是不能在接口中实现的,只能由实现接口的类来实现接口中的方法。
4接口和抽象类的区别:
1)抽象类中可以有实例方法,而接口中方法必须都是抽象的。
2)抽象类中的成员变量可以是各种类型,而接口中的成员变量默认为public static final(而且只能是public static final)。
3)接口中不能有静态代码块和静态方法,抽象类中可以有静态代码块和静态方法。
4)一个类只能继承一个一个抽象类,一个类却可以实现多个接口。
接口的定义:
[权限修饰符] interface interfaceName
{
//声明变量 一般不需要,如果有只能是public static final.
//抽象方法 隐式Public abstract,而且只能是Public abstract。
}
访问修饰符一般为public
实例:
public interface A {
void method1();
}
接口之间可以多继承:
package com.lijiajia02;
interface B {
void methodb();
}
interface C{
void methodc();
}
public interface A extends B,C{
void methoda();
}
class D implements A{
@Override
public void methodb() {
// TODO Auto-generated method stub
}
@Override
public void methoda() {
// TODO Auto-generated method stub
}
@Override
public void methodc() {
// TODO Auto-generated method stub
}
接口的使用:
4.show code:
package com.part03;
/**
* 接口就是一种特别的抽像类
* 接口中的方法都是public的,
* 接口中的方法都是抽像的
* 接口中的方法默认权限为public abstract
* 接口中的成员默认权限为 public static final
* @author Administrator
*
*/
public interface Inter01 {
int i=10;
void m1();
}
interface Inter02
{
void m2();
}
interface Inter03 extends Inter01,Inter02
{
void m3();
}
interface Inter04
{
public void m4();
}
package com.part03;
/**
* 类实现接口,相当于子类实现抽像类
* @author Administrator
*
*/
public class Inter01Imp implements Inter01 {
@Override
public void m1() {
// TODO Auto-generated method stub
System.out.println("m1...");
}
}
package com.part03;
/**
* 可以实现多个接口,
* 接口不能实例化对象,
* @author Administrator
*
*/
public class Inter01Demo extends Inter01Imp implements Inter03, Inter04 {
@Override
public void m2() {
// TODO Auto-generated method stub
System.out.println("m2..");
}
@Override
public void m4() {
// TODO Auto-generated method stub
System.out.println("m4..");
}
@Override
public void m3() {
// TODO Auto-generated method stub
System.out.println("m4..");
}
public static void main(String[] args) {
Inter01 i1=new Inter01Imp();
Inter02 i2=new Inter01Demo();
Inter03 i3=new Inter01Demo();
Inter04 i4=new Inter04() {
@Override
public void m4() {
// TODO Auto-generated method stub
System.out.println("^_^---");
}};
i1.m1();
i2.m2();
i3.m3();i3.m1();i3.m2();
i4.m4();
}
}
运行结果:
m1...
m2..
m4..
m1...
m2..
^_^---