面向对象:
3种类型:类、接口、枚举
4个修饰符:private|protected|public、final、static、abstract
5个成员
一、概念
接口相当于 是一个彻底抽象的类,抽象类中的方法都是抽象的,此时可以通过接口的形式来表示。
接口体现的是一种规范——要暴露出来供大家遵守的,所以接口里的东西全用public修饰符(不写也默认有,通常都不写)
1.1 基本格式
-
[修饰符] interface 接口名 extends 父接口1,父接口2,…
{ -
成员变量:只能有常量(大写!),默认添加public static final修饰,通常不写
-
抽象方法:类方法、方法体,默认添加public abstract修饰
-
内部类:
} -
(接口是多继承的)(不能有构造器、初始化块,因为初始化块最终用于构造器)
-
修饰符:public、(final不能用,因为接口是彻底抽象了,是双重abstract)、(abstract不能有,因为interface已经很抽象了)
-
接口名:命名规范等同于类名;推荐形容词(类名:名词、方法名:动词(行为)、成员变量名:名词(状态))。
二、定义与使用接口
- Java不可以多继承,而接口可以实现多继承(多实现)的原因:
——Java不支持多继承的原因是父类中的方法要写方法体,导致子类调用时,搞不清到底调用哪个父类的方法!而如果采用接口进行多实现,接口中的方法不需要方法体,方法体可以由子类任意定义,所以可以多实现。
/*类与类之间是继承关系(因为父类里有非抽象方法可以直接继承),
*接口是实现关系(因为接口里的方法全是抽象方法,如果继承的话就得全部复写方法,
*所以需要子类将接口方法全部实现后,再实例化,实现不需要复写)
*
*接口是不可以创建对象的,因为有抽象方法,需要被子类实现。
*子类对接口中的抽象方法全部覆盖后,子类才可以实例化,否则子类是一个抽象类
*/
interface InterA //接口1
{
int NUM = 3;//默认有public static final修饰
void show();//默认有public abstract修饰
}
interface InterB //接口2
{
void show();//验证多实现:假如两个接口中的方法一致
}
//接口的多实现
//接口的多实现,可以解决Java子类无法对父类进行多继承的问题,
//不支持多继承的原因是父类中的方法可能有重复,导致子类调用产生问题
//因为父类中需要写方法体,而多实现的几个接口中不需要写方法体
class Test implements InterA,InterB
{
public void show()//覆盖接口内的方法
{
}
}
public class InterfaceDemo1
{
public static void main(String[] args)
{
Test t = new Test();
System.out.println(t.NUM);//对象调用成员、类调用成员
System.out.println(Test.NUM);//类调用成员
System.out.println(Inter.NUM);//接口调用成员
//t.NUM = 4;//错误,不可以对接口全局静态常量赋值
}
}
interface A
{
void methodA();
}
interface B
{
void methodB();
}
interface C extends B,A
{
void methodC();
}
class D implements C
{
public void methodA(){}
public void methodB(){}
public void methodC(){}
}
接口的特点: