本帖最后由 ID1003 于 2014-5-23 00:05 编辑
同学,你发这样的帖子,就这么一句话,总感觉你有一种灌水的意思,虽然是这么说,但是我还是给你介绍一下我所了解的接口吧。我想应该都知道,在学习初期可以把接口当做一种特殊的抽象类,因为他有的特征在抽象类中差不多都可以找出来,那么为什么还要单独出来一个接口呢,举个小例子来说明一下吧。- interface English {
- public abstract void speakEnglish();//说英语
- }
- //人类
- abstract class Person {
- //成员变量
- private String name;
- private int age;
- //构造方法
- public Person(){}
- public Person(String name, int age){
- this.name = name;
- this.age = age;
- }
- //set、get公共方法
- public void setName(String name){
- this.name = name;
- }
- public String getName(){
- return name;
- }
- public void setAge(int age){
- this.age = age;
- }
- public int getAge(){
- return age;
- }
- //抽象方法
- public abstract void eat();//吃饭
- }
- //运动员
- abstract class Player extends Person {
- //构造方法
- public Player(){}
- public Player(String name, int age){
- super(name, age);
- }
- //抽象方法
- public abstract void study();//学习
- }
- //教练
- abstract class Coacher extends Person {
- //构造方法
- public Coacher(){}
- public Coacher(String name, int age){
- super(name, age);
- }
- //抽象方法
- public abstract void teach();//讲课
- }
- //乒乓球运动员
- class PingPongPlayer extends Player implements English {
- //构造方法
- public PingPongPlayer(){}
- public PingPongPlayer(String name, int age){
- super(name, age);
- }
- //重写 接口与抽象类中的所有抽象方法
- public void speakEnglish(){//说英语
- System.out.println("乒乓球运动员说英语");
- }
- public void eat(){//吃饭
- System.out.println("乒乓球运动员吃饭");
- }
- public void study(){//学习
- System.out.println("乒乓球运动员学习");
- }
- }
- //足球运动员
- class FootballPlayer extends Player {
- //构造方法
- public FootballPlayer(){}
- public FootballPlayer(String name, int age){
- super(name, age);
- }
- //重写 接口与抽象类中的所有抽象方法
- public void eat(){//吃饭
- System.out.println("足球运动员吃饭");
- }
- public void study(){//学习
- System.out.println("足球运动员学习");
- }
- }
- //乒乓球教练
- class PingPongCoacher extends Coacher implements English {
- //构造方法
- public PingPongCoacher(){}
- public PingPongCoacher(String name, int age){
- super(name, age);
- }
- //重写 接口与抽象类中的所有抽象方法
- public void speakEnglish(){//说英语
- System.out.println("乒乓球教练说英语");
- }
- public void eat(){//吃饭
- System.out.println("乒乓球教练吃饭");
- }
- public void teach(){//学习
- System.out.println("乒乓球教练教课");
- }
- }
- //足球教练
- class FootballCoacher extends Coacher {
- //构造方法
- public FootballCoacher(){}
- public FootballCoacher(String name, int age){
- super(name, age);
- }
- //重写 接口与抽象类中的所有抽象方法
- public void eat(){//吃饭
- System.out.println("足球教练练吃饭");
- }
- public void teach(){//学习
- System.out.println("足球教练练教课");
- }
- }
- //测试类
- class InterfaceTest
- {
- public static void main(String[] args)
- {
- PingPongPlayer ppp = new PingPongPlayer("王浩", 28);
- ppp.eat();
- ppp.study();
- ppp.speakEnglish();
- }
- }
复制代码 从上面代码中可以看到,English()就是一个接口,需要有子类来实现它,但是并不是下面四个子类都需要实现,而只是其中的一部分需要它,所以就把它拿出来定义成了接口。说的最简单的话就是,当只有一部分的子类需要实现某种方法的时候,那么这个方法就可以定义成一个接口。
|