Java学习笔记【接口】

来源:互联网 发布:学编程学费要多少钱 编辑:程序博客网 时间:2024/05/20 19:17

1、接口

首先,接口不是类,它主要用来描述类有什么功能,而并不给出每个功能的具体实现。接口中所有方法自动地属于public。因此,在接口中声明方法时,不必提供关键字public。为了让类实现一个接口,通常需要下面两个步骤:1)将类声明为实现给定的接口2)对接口中的所有方法进行定义关键字implements将类声明为实现某个接口:
class Employee implements Comparable
当然,这里的Employee类需要提供compareTo方法:
    public int compareTo(object otherObject)    {        Employee other = (Employee) otherObject;        return Double.compare(salary, other.salary);    }
警告:在实现接口时,必须把方法声明为public。

新一代Java SE 5.0中实现:
    class Employee implements Comparable<Employee>    {           public int compareTo(Employee other)        {            return Double.compare(salary, other.salary);        }        ...    }

2、接口的特性

不能使用new运算符实例化一个接口:
x = new Compare(...); //ERROR
可以声明接口的变量:
Comparable x; //OK
接口变量必须引用实现了接口的类对象:
x = new Employee(...);

接口也可以扩展,接口Moveable示例:
    public interface Moveable    {        void move(double x, double y);    }
以Moveable为基础扩展一个Powered接口:
    public interface Powered extends Moveable    {        double milesPerGallon();        double SPEED_LIMIT = 95; //接口中可以包含常量    }
如果希望自己设计的类拥有克隆和比较能力,只要实现着两个接口就行了:
    class Employee implements Cloneable, Comparable    {        ...    }

3、接口与抽象类

为何不利用抽象类却要引入接口概念?因为Java不支持多继承。
    class Employee extends Person, Comparable{...} //ERROR    class Employee extends Person implements Comparable{...} //OK

4、对象克隆

拷贝变量时,原始变量与拷贝变量引用同一个对象,一个操作会导致另个也受影响。clone是Object类的一个protected方法。默认克隆操作是浅拷贝,它并没有克隆包含在对象中的内部对象。适用于子对象不可变。常见情况是子对象可变,因此必须重新定义clone,实现深拷贝。Cloneable接口是一个标记接口,没有方法,只是用来instanceof进行类型检查。

浅拷贝:
    class Employee implements Cloneable    {        punlic Employee clone() throws CloneNotSupportedException        {            return (Employee) super.clone();    //未克隆对象中的内部对象        }        ...    }
深拷贝:
    class Employee implements Cloneable    {        ...        punlic Employee clone() throws CloneNotSupportedException        {            Employee cloned = (Employee) super.clone();             cloned.hireDay = (Date) hireDay.clone();  //所有可变实例域全部拷贝            return cloned;        }    }

5、接口与回调

回调是一种程序设计模式。指出某个特定时间发生时应该采取的动作。
0 0
原创粉丝点击