`
jassion
  • 浏览: 12355 次
  • 性别: Icon_minigender_1
  • 来自: 厦门
社区版块
存档分类
最新评论

接口与抽象类

 
阅读更多

接口是Java里实现多重继承的重要方法。
    抽象类则有点类似"模板"得作用,其目的是要依据其格式修改并创建新的类。
    先说说接口吧。
1、接口的定义
    接口是Java中实现多态性的重要手段。使用借口,可以把操作完全从类中抽象出来,也就是,接口中只定义类必须做什么,而不是如何做。接口从语法上看与一般类类似,但是有两个不同点:
    *在接口中只是声明method,而不在其中实现。
    *在接口中定义的数据成员必须要初始化,且不能更改。
    举个例子说明一下接口定义的方式。
    interface IShape
{
    double Pi=3.14159;//数据成员一定要初始化
    void area();//method 只声明不实现
}
    这样,每个实现IShape接口的类都可以自由的使用常量Pi,而且必须在类内部定义area()方法。
    因为在接口中只有抽象的方法,即只对方法进行声明而不定义其处理方式,所以接口不能像一般类一样,用new运算符直接产生对象。相反的,我们必须利用借口的特性打造一个新的类,在用此生成的类创建对象。而利用接口打造新的类的过程,就是借口的实现(implementation)
2、接口的实现
  举一个接口实现的例子。
    public interface AudioClip
{
    void play();
    void loop();
    void stop();
}
    class Myclass implements AudioClip
{
    void play()
{    <具体实现>
}
    void loop()
{    <具体实现>
}
    void stop()
{    <具体实现>
}    
}
这里定义了AudioClip接口,想使用AudioClip接口的类必须使用implements关键词来实现接口。优点是一个接口类可以被多个类实现,每个类可以共享程序接口而不必关心其他类是怎么实现的。
另外,再举个接口部分实现的例子。
    public interface Myinterface
{
    void method1();
    void method2();
    void method3();
}
    public abstract class Myclass implements Myinterface
{
    void method1();
{
System.out.println("here is method1");
}
    void method2()
{
System.out.println("here is method2");
}
    void method3();
}
在Myclass没有实现Myinterface的method3方法,所以类Myclass必须声明为抽象类(abstract)。我们必须定义Myclass的一个子类,来实现接口Myinterface中声明的剩余的方法method3().
3.接口的扩展
    public interface interface3 extends interface1,interface2
{
    //接口体
}
现在,接口interface3具有interface1,interface2的所有的成员方法和变量。
4、抽象类
     抽象类是其中仅定义了部分实现的类。在类中,没有实现的方法也要标记为abstract。
在java中,如下方法不能定义为抽象方法:
*构造方法
*静态方法
*私有方法
和借口类似,抽象类也不能直接用new运算符实例化一个对象。任何派生与抽象类的子类,要么完全实现所有的方法,要么声明自己也是一个抽象类。
据个例子:
    public abstract class Animal
{
    private String type;
    public abstract void sound();//抽象方法
    public Animal(String atype)
{
    type=atype;
}
    public String toString()
{
    return "This animal is"+type;
}
}

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics