有时必须从几个类中派生出一个子类,继承它们所有的属性和方法。但是,Java不支持多重继承。有了接口,就可以得到多重继承的效果。
1.接口(interface)是抽象方法和常量值的定义的集合。
从本质上讲,接口是一种特殊的抽象类,这种抽象类中只包含常量和方法的定义,而没有变量和方法的实现。
2.实现接口类:
class SubClass implements InterfaceA{ }
一个类可以实现多个接口,接口也可以继承其它接口。
3.接口的特点:
用interface来定义。
接口中的所有成员变量都默认是由public static final修饰的。
接口中的所有方法都默认是由public abstract修饰的。
接口没有构造器。
接口采用多继承机制。
4.实现接口的类中必须提供接口中所有方法的具体实现内容,方可实例化。否则,仍为抽象类。
接口的主要用途就是被实现类实现。(面向接口编程)
与继承关系类似,接口与实现类之间存在多态性
定义Java类的语法格式:先写extends,后写implements
package com.atguigu.java;
/*
* 接口(interface)是与类并行的一个概念
* 1.接口可以看做是一个特殊的抽象类。是常量与抽象方法的一个集合。
* 2.接口是没有构造器的。
* 3.接口定义就是一种功能。此功能可以被类所实现(implement).
* 比如:class CC extends DD implements AA
* 4.实现接口的类。必须要重写其中的所有的抽象方法,方可实例化。
* 若没有重写所有的抽象方法,则此类仍为抽象类。
* 5.类可以实现多个接口。----java中的继承是单继承的
* 6.接口与接口之间也是继承的关系,而且可以实现多继承。
* >5,6是描述的java中继承的特点。
* 7.接口与具体的实现类之间也存在多态性
*/
public class TestInterface {
}
interface AA{
//常量:所有的常量都是用public static final修饰,可写可不写
// public static final int I = 11;
// public static final boolean FLAG = false;
int I = 11;
boolean FLAG = false;
//抽象方法:所有的都用public abstract修饰
void method1();
void method2();
}
abstract class BB implements AA{
}
class DD{
}
interface MM{
void method3();
}
class CC extends DD implements AA,MM{
public void method1() {
}
public void method2() {
}
public void method3() {
}
}
//接口之间仍为继承关系!(多继承)
interface JJ extends MM{
void method4();
}
class GG implements JJ,AA{
@Override
public void method4() {
// TODO Auto-generated method stub
}
@Override
public void method3() {
// TODO Auto-generated method stub
}
@Override
public void method1() {
// TODO Auto-generated method stub
}
@Override
public void method2() {
// TODO Auto-generated method stub
}
}