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
- java接口学习笔记
- Java接口学习笔记
- Java接口学习笔记
- Java接口学习笔记
- Java接口学习笔记
- Java接口学习笔记
- Java接口学习笔记
- Java接口学习笔记
- Java接口学习笔记
- Java 学习笔记-接口
- Java学习笔记【接口】
- JAVA学习笔记--接口
- Java接口学习笔记
- Java接口学习笔记
- JAVA接口(Interface)学习笔记
- JAVA接口学习笔记【转】
- java学习笔记<十>接口
- Java学习笔记_21_Collection接口
- Ubuntu14.04 (Mac)编译安装mysql5.6.26
- 再谈select, iocp, epoll,kqueue及各种I/O复用机制
- AlertController(iOS8)
- Python Logging
- Android实战简易教程<五十八>(AlarmManager类用法研究小实例)
- Java学习笔记【接口】
- iOS安全系列之一:HTTPS
- 手机号码中间四位星号表示实例代码
- Edit Distance
- 网络扫描技术揭秘
- 黑马程序员——Java基础---多线程
- ios8 statusBar hidden and show
- 数据库分库分表-水平分表笔记
- 端上保证可靠性还是链路保证