小结-----------------------------------------------------------------------------------------------

(1)为什么要使用接口,什么场景下使用接口呢?以下面的例子说明:

当某些类有相同的特征,但是却没有继承关系时,可以将这些相同特征提取出来,成为一个接口,再用这些类去实现这个接口。

4.2.8 抽象类(abstract class)与接口(interface)有什么异同【Part2:接口】

(2)定义~1:使用interface关键字定义接口,且修饰符只能用public,因为接口就是为了被继承被使用才定义的。

(3)定义~2:定义一个接口时,接口名的第一个字母通常为大写的I,以此来方便区别类和接口。此外,由于接口和类是类似的,因此其中的属性和方法是可以用访问控制符来限制的,但是注意接口中的属性和方法都得是public修饰的。接口中涉及到关键字的省略,具体的省略方式如下:

①定义接口时的abstract关键字可以省略,但是public不能省略。

②定义公有全局常量时的public static final关键字可以省略;

③定义公有抽象方法时的public abstract关键字可以省略。

注意:虽然可以省略,但是其实系统会帮我们自动添加上。:

(4)内容:接口中的内容全部是公有全局常量(>=0)定义或者是公有抽象方法(>=0)的定义,因此接口的定义一定要有abstract关键字,如果没有显式写出,系统也会自动为我们加上。

(5)继承~1:接口可以继承其他接口,也可以不继承其他接口。中括号的含义表示可选项,继承接口和继承类一样都是用extends关键字。接口可以继承多个父接口,而Java中的类是单继承的,只能有一个父类。

(6)继承~2:类的继承要先于接口的实现,即extends关键字要在implements之前,二者顺序不能互换;此外,接口之间使用逗号来分隔。

(7)接口的使用

①使用接口的引用来指向一个实现了该接口的类的对象(类的实例),就可以使用该引用来调用实现该接口的类中的方法,这个方法本来在接口中是抽象方法,在相应的类中得到了实现,因此可以调用。

②接口常与匿名内部类一起使用:其中下面的(3)方法,也就是不通过接口引用来调用匿名内部类中的方法,在安卓开发和其他高级框架中是最经常采用的方式。

-------------------------------------------------------------------------------------------------------------------

4.2.8 抽象类(abstract class)与接口(interface)有什么异同【Part2:接口】

4.2.8 抽象类(abstract class)与接口(interface)有什么异同【Part2:接口】

4.2.8 抽象类(abstract class)与接口(interface)有什么异同【Part2:接口】

(1)使用interface关键字定义接口,且修饰符只能用public,因为接口就是为了被继承被使用才定义的。

4.2.8 抽象类(abstract class)与接口(interface)有什么异同【Part2:接口】

(2)接口中的内容全部是常量(>=0)定义或者是抽象方法(>=0)的定义,因此接口的定义一定要有abstract关键字,如果没有显式写出,系统也会自动为我们加上。

4.2.8 抽象类(abstract class)与接口(interface)有什么异同【Part2:接口】

(3)接口可以继承其他接口,也可以不继承其他接口。中括号的含义表示可选项,继承接口和继承类一样都是用extends关键字。接口可以继承多个父接口,而Java中的类是单继承的,只能有一个父类。

4.2.8 抽象类(abstract class)与接口(interface)有什么异同【Part2:接口】

4.2.8 抽象类(abstract class)与接口(interface)有什么异同【Part2:接口】

4.2.8 抽象类(abstract class)与接口(interface)有什么异同【Part2:接口】

4.2.8 抽象类(abstract class)与接口(interface)有什么异同【Part2:接口】

(4)类的继承要先于接口的实现,即extends关键字要在implements之前,二者顺序不能互换;此外,接口之间使用逗号来分隔。

4.2.8 抽象类(abstract class)与接口(interface)有什么异同【Part2:接口】

(5)为什么要使用接口,什么场景下使用接口呢?以下面的例子说明:

当某些类有相同的特征,但是却没有继承关系时,可以将这些相同特征提取出来,成为一个接口,再用这些类去实现这个接口。

4.2.8 抽象类(abstract class)与接口(interface)有什么异同【Part2:接口】

(6)定义一个接口时,接口名的第一个字母通常为大写的I,以此来方便区别类和接口。此外,由于接口和类是类似的,因此其中的属性和方法是可以用访问控制符来限制的,但是注意接口中的属性和方法都得是public修饰的。接口中涉及到关键字的省略,具体的省略方式如下:

①定义接口时的abstract关键字可以省略,但是public不能省略。

②定义公有全局常量时的public static final关键字可以省略;

③定义公有抽象方法时的public abstract关键字可以省略。

注意:虽然可以省略,但是其实系统会帮我们自动添加上。

package com.imooc;
public interface IPlayGame {//完整的写法是public abstract interface IPlayGame 但是通常可以省略接口定义中的abstract
double b=3.0;//完整的写法是public static final double b=3.0; 但是通常可以省略全局常量定义中的public static final
void playGame();//完整的写法是public abstract void playGame();但是通常可以省略抽象方法定义中的public abstract

}

(7)接口的使用

①使用接口的引用来指向一个实现了该接口的类的对象(类的实例),就可以使用该引用来调用实现该接口的类中的方法,这个方法本来在接口中是抽象方法,在相应的类中得到了实现,因此可以调用。

package com.imooc;
public class Initial {
public static void main(String[] args) {
IPlayGame ip1=new SmartPhone();
ip1.playGame();//结果是SmartPhone具有玩游戏的功能
IPlayGame ip2=new Psp();
ip2.playGame();//结果是PSP具有玩游戏的功能
}

}

②接口常与匿名内部类一起使用:其中下面的(3)方法,也就是不通过接口引用来调用匿名内部类中的方法,在安卓开发和其他高级框架中是最经常采用的方式。

4.2.8 抽象类(abstract class)与接口(interface)有什么异同【Part2:接口】

4.2.8 抽象类(abstract class)与接口(interface)有什么异同【Part2:接口】

public class Initial {
public static void main(String[] args) {
//(1)第一种使用接口的方式:定义有名字的类,来实现接口
IPlayGame ip1=new SmartPhone();
ip1.playGame();
IPlayGame ip2=new Psp();
ip2.playGame();
//(2)第二种:定义匿名内部类,来实现接口
IPlayGame ip3=new IPlayGame() {

@Override
public void playGame() {
System.out.println("使用匿名内部类的方式实现接口");

}
};//必须以分号结束

ip3.playGame();//(2)用当前的接口引用来调用经过匿名内部类实现的playGame()方法

new IPlayGame() {//(3)匿名内部类实现接口的方法也可以不通过接口引用来调用,即:

@Override
public void playGame() {
// TODO Auto-generated method stub
System.out.println("使用匿名内部类的方式实现接口2");
}
}.playGame();

}
}

相关文章: