如果一个抽象类的所有方法都是抽象的,则可以将这个类定义接口。
接口是一种特殊的类,由"全局常量"和"公共的抽象方法"组成,不能包含"普通方法"。
接口是由全局常量和抽象方法组成,接口中除了抽象方法外,还可以有默认方法和静态方法(也叫类方法),
默认方法使用default修饰,静态方法使用static修饰,且这两种方法都"允许有方法体"。
一个接口可以有多个父亲接口,父接口之间使用逗号分隔。
Java使用接口的目的是为了"克服单继承的限制",因为一个类只能有一个父类,
"而一个接口可以同时继承多个父接口。"
接口中的变量默认使用"public static final"进行修饰,即"全局常量"。
接口中定义的方法默认使用"public abstract"进行修饰,即"抽象方法"。
如果接口声明为public,则接口中的变量和方法全部为public。
与抽象类一样,"接口"的使用"必须通过子类",子类通过implements关键字实现接口,
并且子类必须"实现接口中的所有抽象方法"。
需要注意的是,一个类可以同时实现多个接口,多个接口之间需要使用英文逗号(,)分隔。
"接口和接口"之间也是属于"继承的关系",但不同于类的单继承关系,接口与接口是可以多继承的
package sk;
public class texta1 {}
interface JK /接口名 JK
{
public static final int num=10; /静态常量,"public static final"可省略
public abstract void method(); /抽象方法
public static void show() / 静态方法
{System.out.println("我是静态方法");}
public default void fun() /默认方法
{System.out.println("我是默认方法");}
}
interface JF /接口JF
{
}
class B
{
public int b;
}
/实现类,可以理解为接口的子类,继承接口要用关键字 implements来修饰
/实现接口必须重写抽象方法,默认方法随便(不需要强制重写)
class P implements JK
{
public void method()//子类重写抽象方法
{System.out.println("我是重写的抽象方法");}
}
/实现类还可以"继承一个类的同时实现接口",但继承和实现有先后顺序是先extends再 implements也可以把 继承是看成亲爹而实现是后爹
class C extends B implements JK
{
public void method()//子类重写抽象方法
{System.out.println("我是重写的抽象方法");}
}
一个类"实现多个接口"
class A implements JK,JF
{
public void method()//子类重写抽象方法
{System.out.println("我是重写的抽象方法");}
}
"接口与接口"之间的关系,JK1接口"继承"JK接口
interface JK1 extends JK
{
}
package sk;
public class tasta2 {
public static void main(String[] args){
P a= new P();
System.out.println(a.num) ; /调用接口中的静态常量 或 " 接口名.静态变量"
a.method(); /调用重写后的抽象方法
a.fun(); /调用接口的默认方法
/a.show(); /a不可直接调用,因为show()是接口的"静态方法",
/它只属于它存在的接口中,它的调用只能用"接口名.静态方法"来实现。
JK.show();
System.out.println(JK.num); /调用接口中的静态常量 或 接口名.静态变量
}
}
Java 接口的使用
最新推荐文章于 2024-04-29 17:13:39 发布