程序手记

程序是我毕生的追求......
随笔 - 19, 文章 - 0, 评论 - 9, 引用 - 0
数据加载中……

JAVA面向对象编程 (接口) 第二天

    接口是JAVA语言中非常重要的概念,回调是软件设计中常用的模式。JAVA的接口不仅可以用来实现多继承关系,也用来实现回调机制。 java.lang.Comparable 接口和 java.util.Comparator 接口是进行数据对象比较和排序中需要实现的接口,他们在功能和使用方法上都有所不同。

    当类只从一个类继承时称为单继承,JAVA语言只允许单继承。如果需要多继承关系,可以通过JAVA语言中的接口实现。
    抽象方法只有方法定义,没有方法体,如果一个类包含任何抽象方法,包括直接的和继承所得,则这个类必须是抽象的。如果一个类是抽象的,则不能创建此类的对象。抽象类强制要求他的所有子类重写自己的方法以覆盖抽象方法。
    如果存在超类 Animal,显然cat同时具有 Animal和pet的特性,就是说,cat不只是一个animal还是一个pet,除需要继承animal类,还期望能实现pet类。因为JAVA只允许单继承,CAT不能继承animal又继承pat,解决这个问题的方法是定义接口,并通过接口实现多继承。

定义接口
    我们把只有抽象方法和常量的抽象类称为接口,接口形式化定义了一组相互有关系的未实现的方法。接口的定义包括接口声明和接口体。
接口声明的语法为:[public] interface 接口名 [extends 父接口名] {。。。。。。}
    EXTENDS子句与类声明的extends子句基本相同,不同的是:一个接口可以有多个父接口,用逗号隔开,而一个类只能有一个父类。
    接口体包括常量和抽象方法。
   
接口Pet示例:

    interface Pet{
        public abstract void speak();
    }
    public class Dog implements Pet{
        public void speak(){
            System.out.println("Woof");
        }
    }
    public class Cat implements Pet{
        public void speak(){
            System.out.println("Meow");
        }
    }
    public class Bird implements Pet{
        public void speak(){
            System.out.println("Tweedle");
        }
    }
    public class TestAnimals{
        public static void main(String args[]){
            Pet myPets = new Pet[4];
            myPets[0] = new Bird();
            myPets[1] = new Cat();
            myPets[2] = new Bird();
            myPets[3] = new Dog();
            
            for(int index = 0; index<4; index++){
                myPets[index].speak();
            }
        }
    }


    类Bird ,Cat 和 Dog 与 Pet 不再具有父子关系,而分别是实现了接口Pet的类。
    一个接口的定义由关键字 interface 开始,包括一套 public ,abstract 方法,接口也可以包含 public ,final,static数据。一个期望使用接口的类必须将自己声明为 implements 接口,并重写接口定义的每个方法,保证参数列表及返回类型与接口中所定义的相一致。简单说,强制要求实现接口的类覆盖接口的方法。
    如果一个类没有覆盖接口定义中的全部方法,那么这个类就称为抽象类,必须贝声明为 abstract。

用Cat类继承Animal 类 和 定义Pet接口的示例:
public class Cat extends Animal implements Pet{
    public void speak(){//实现
}
}

posted on 2008-08-02 18:01 程序手记 阅读(242) 评论(0)  编辑  收藏


只有注册用户登录后才能发表评论。


网站导航: