Java Core 接口和内部类

来源:互联网 发布:雅马哈yv100ii编程界面 编辑:程序博客网 时间:2024/04/28 19:41

 

1、  接口描述一个类具有某些功能,而不是实现这些功能,它本身不是一个类,不能被实例化。

2、  接口性质

1)  接口中所有的方法自动属于public类型,不需要在接口中用public修饰;

2)  接口中可以定义常量,不需要用public static final修饰,接口中的常量自动属于这个“类型”;

3)  接口中不能包含数据域,也不能包含接口的实现,也不能包含静态方法;

4)  编写接口主要是清楚应该提供哪些接口,不提供哪些接口;

5)  接口类必须由一个类来实现其方法, 使用implements关键字;

6)  接口实现类中,方法必须用public来修饰,但是接口中不需要;

7)  接口变量必须引用接口实现类的对象;

8)  可以使用instanceof检查一个对象是否属于某个接口;

9)  接口可以扩展另外一个接口,即接口继承自接口;

10)    尽管一个类只能继承自一个父类,但是可以实现多个接口;

 

3、  compareTo必须满足“自反性”,即x.compareTo(y) = - y.compareTo(x);

4、  接口类与抽象类类似,但是抽象类可以被扩展,接口类可以被实现,但是子类只能继承自一个超类,然而可以实现多个接口类,因此接口类主要用于“多继承特性”。

5、  Clone

1)  Java默认的克隆方法是浅拷贝的,即如果对象中包含了对象的引用变量,拷贝之后的对象中的对象的引用变量与原对象中的对象引用变量指向相同的对象,可能导致对象状态变化不一致;

2)  每个类药实现自己的clone,类必须实行Cloneable接口,并用public修饰符重定义clone方法;

3)  Cloneable接口是java提供的几个标记接口之一,目的是表明类设计者知道需要克隆,如果一个对象需要克隆,但是没有实现Cloneable就会产生一个已检验异常(checked exception);

4)  即使默认实现(浅拷贝)能满足要求,也应该实现Cloneable接口,并将Clone重定义为public,调用super.clone();

5)  要谨慎使用clone方法,根据应用的需要增加clone方法;

6)  所有的数组类型都包含了一个clone方法,利用这个方法创建一个包含所有数据元素拷贝的一个新数组;

 

6、  接口和回调

回调是一种常见的程序设计模式,在这种模式中,可以指定某个特定事件发生时采取的动作。

7、  内部类

1)使用内部类的原因

A)内部类方法可以访问类定义所在的作用域中的数据,包括私有的数据;

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

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

2)Java内部类与C++中的嵌套类类似,不仅可以定义类的关系,实现命名控制和访问控制,还有一个C++嵌套类没有的功能,即内部类的对象有一个隐式的引用,它引用了实例化该内部对象的外围类对象,但是静态的(static)内部类没有此引用。

3)内部类即可以方法自身的数据,也能访问定义它的外部内的数据,这就是内部类有一个隐式的引用,指向创建它的外部类对象。

1)          外围类的引用在构造器中设置,编译器修改了所有的内部类的构造器,添加了一个外围类的引用的参数。

2)          内部类的特殊语法规则,在内部类中应有外围类:OuterClass.this表示外围类的引用;在外围类外部引用公开内部类方法:OuterClass.InnerClass;

3)          局部类,将内部类定义在所需要的方法中,局部类不能用public或private访问说明符进行声明,它的作用域被限定在声明这个局部类的块中。

4)          匿名内部类,如果只创建这个类的一个对象,则就不需要命名了。

原创粉丝点击