Java核心技术6:接口与内部类

        接口(interface),主要用来描述类具有什么功能,并不给出每个功能的具体实现。

        克隆对象,指创建一个新对象,且新对象的状态与原始对象的状态相同,当对克隆对象进行修改时,不会影响原始对象的状态。

        内部类,定义在一个类的内部,其中的方法可以访问包含它们的外部类的域。主要用于设计具有相互协作关系的类集合。

6.1    接口

        接口不是类,而是对类的一组需求描述,这些类要遵从接口描述的统一格式进行定义。

        public interface Comparable{    int compareTo(Object other);}

        任何实现Comparable接口的类都需要包含compareTo方法,并且这个方法的参数必须是一个Object对象,返回一个整型数值。

        接口中可以定义常量,不能含有实例域,不能在接口中实现方法。可以将接口看成是没有实例域的抽象类。

        让类实现某个接口需要两步:1.将类实现给定的接口,关键字implements,2.对接口中的所有方法进行定义。

6.1.1    接口的特性

        接口不是类,不能使用new运算符实例化一个接口,可以声明接口的变量,接口变量必须引用实现了接口的类对象。可以使用instanceof检查一个对象是否实现了某个特定的接口。

        接口中的所有方法自动地属于public,在接口中声明方法时,不必提供关键字public。接口中的域都将被自动设为public static final,即常量。

        一个类可以实现(implement)一个或多个接口,并在需要接口的地方,随时使用实现了接口的对象。使用逗号将实现的各个接口分隔开。

6.1.2    接口域抽象类

        使用抽象类表示通用属性时,由于每个类只能扩展于一个类,就不能扩展第二个类了。

        Java不支持多继承(一个类有多个超类),通过接口机制实现多继承的大部分功能。

6.2    对象克隆(深拷贝)

        拷贝一个变量时,原始变量与拷贝变量引用同一个对象,改变一个变量所引用的对象将会影响另一个变量。

        clone方法是Object类的一个protected方法,由于这个类对具体的类对象一无所知,所以只能将各个域进行对应的拷贝。如果对象中的所有数据域都属于数值或基本类型,这样拷贝域没有任何问题。如果在对象中包含了子对象的引用,拷贝的结果会使得两个域引用同一个子对象,因此原始对象域克隆对象共享这部分信息。

        Cloneable接口没有指定clone方法,这个方法是从Object类继承来的。接口在这里只是作为一个标记,表明类设计者知道要进行克隆处理。为了实现深拷贝,必须克隆所有可变的实例域。

6.3    接口与回调

6.4    内部类

        内部类方法可以访问该类定义所在的数据域中数据,包括私有的数据。

        内部类可以对同一个包中的其他类隐藏起来。

        当想要定义一个回调函数且不想编写大量代码时,使用匿名内部类比较便捷。

6.4.1    使用内部类访问对象状态

6.4.2    内部类的特殊语法规则

6.4.3    内部类是否有用、必要和安全

6.4.4    局部内部类

6.4.5    由外部方法访问final变量

6.4.6    匿名内部类

6.4.7    静态内部类

6.5    代理

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值