1、接口概念
a、类是一种具体实现体,接口定义了某一批类所需要遵守的规范
b、不关心类的内部数据,不关心类里的方法的实现细节
c、只规定 这些类里必须提供某些方法
2、接口定义的基本语法(多继承)
【public】 interface 接口名 【extends 父接口1,父接口2,...】
{
零到多个常量定义
零到多个抽象方法的定义 // 全是常量或者 抽象方法
}
注意: 接口就是用来被继承,被实现的,修饰符一般都是public
不能使用private 和protect修饰接口
3、接口定义
常量:
接口中的方法只能是抽象方法,总是使用,即使定义时不添加 public abstract 修饰符 ,系统也会自动加上。
4、使用接口
一个类可以实现一个接口或多个接口,实现接口使用 implements 关键字。
java中一个类只能继承一个父类,是不够灵活的,通过实现多个接口可以做补充。
public(修饰符) class 类名 extends 父类 implements 接口1,接口2 ...
{
// 如果继承了抽象类,需要实现继承的抽象方法;要实现接口中的抽象方法。
}
如果要继承父类, 继承父类必须实现在接口之前 不能换位置
public interface IPlayGame{ //接口
public void playGame();
}
public class SmartPhone extends Telphone implements IPlayGame{
public void call(){
System.out.println("通过语音来打电话");
}
public void message(){
System.out.println("通过语音来发短信");
}
public void playGame(){ //实现接口中的抽象方法。
System.out.println("具有玩游戏的功能");
}
}
public class Psp implements IPlayGame{
public void playGame(){
System.out.println("具有玩游戏的功能"); //实现接口中的抽象方法
}
}
public class Initail{
public static void main(String[] args){
IPlayGame ip1 = new smartPhone(); //指向 实现了接口的对象
ip1.playGame();
IPlayGame ip2 = new Psp(); //指向 实现了接口的对象
ip2.playGame();
}
}
结果:具有玩游戏的功能
具有玩游戏的功能
5、与匿名内部类配合使用接口
匿名内部类就是没有名字的内部类,多用于关注实现而不关注实现类的名字
语法格式:
interface i =new Interface(){
public void method(){
System.out.println( " 匿名内部类实现接口的方式" );
}
}
public interface IPlayGame{ //接口
public void playGame();
}
public class SmartPhone extends Telphone implements IPlayGame{
public void call(){
System.out.println("通过语音来打电话");
}
public void message(){
System.out.println("通过语音来发短信");
}
public void playGame(){ //实现接口中的抽象方法。
System.out.println("具有玩游戏的功能");
}
}
public class Psp implements IPlayGame{
public void playGame(){
System.out.println("具有玩游戏的功能"); //实现接口中的抽象方法
}
}
public class Initail{
public static void main(String[] args){
IPlayGame ip1 = new smartPhone(); //指向 实现了接口的对象
ip1.playGame();
IPlayGame ip2 = new Psp(); //指向 实现了接口的对象
ip2.playGame();
IPlayGame ip3 = new IPlayGame (){
public void playGame(){
System.out.printf("使用匿名内部类的方式实现接口");
}
}; **分号结束**
ip3.playGame();
new IPlayGame (){
public void playGame(){
}
} . playGame();
}
}
具有玩游戏的功能
使用匿名内部类的方式实现接口
使用匿名内部类的方式实现接口 2