Java复习笔记(7)——接口和内部类
2016-12-15 15:00
351 查看
接口
1、在Java程序设计语言中,接口不是类,而是对类的一组需求描述,这些类要遵从接口描述的统一格式进行定义。
2、接口中的所有方法自动地属于public。
3、接口绝对不能含有实例域,也不能在接口中实现方法。提供实例域和方法实现的任务应该由实现接口的那个类来完成。
4、使用implements关键字使类实现一个接口。
5、接口不是类,尤其不能使用new运算符实例化一个接口:
x = new Comparable(...) // ERROR
6、然而,尽管不能构造接口的对象,却能声明接口的变量:
Comparable x; // OK
7、可以使用instanceof检查一个对象是否实现了某个接口。
8、类似于建立类的继承关系,接口也可以被扩展。允许存在多条从具有较高通用性的接口到较高专用性的接口的链:
public interface Movable {
void move(double x, double y);
}
public interface Powered extends Moveable {
double milesPerGallon();
}
9、在接口中可以包含常量,接口中的域会被自动设置为public static final。
public interface Powered extends Moveable {
double milesPerGallon();
double SPEED_LIMIT = 95; // a public static final constant.
}
10、每个类只能有一个超类,但是可以实现多个接口。
11、接口可以提供多重集成的大多数好处,同时还能避免多重集成的复杂性和低效性。
12、Java默认的克隆操作时浅拷贝,它并没有克隆包含在对象中的内部对象。
13、进行对象克隆操作时,需要作出下列判断:
① 默认的clone方法能否满足需求。
② 默认的clone方法是否能够通过调用可变子对象的clone得到修补。
③ 是否不应该使用clone。
如果要选择①和②,类必须:
① 实现Cloneable接口。
② 使用public访问修饰符重新定义clone方法。
14、Cloneable是一个标记接口(tagging interface),接口中不包含方法,使用它的唯一目的是可以用instanceof进行类型检查。
15、所有的数组类型均包含一个clone方法,这个方法被设为public,而不是protected。可以利用这个方法创建一个包含所有数据元素的拷贝的新数组:
int[] luckyNumbers = {2, 3, 5, 7, 11, 13};
int[] cloned = luckNumbers.clone();
cloned[5] = 12; // doesn’t change luckyNumbers[5];
内部类
1、内部类(inner class)是定义在另一个类中的类。
2、定义内部类主要基于以下三个原因:
① 内部类方法可以访问该类定义所在的作用域中的数据,包括私有数据
② 内部类可以对同一个包中的其他类隐藏起来。
③ 当想要定义一个回调函数且不想编写大量的代码时,使用匿名内部类比较便捷。
3、内部类既可以访问自身的数据域,也可以访问创建它的外围类的对象的数据域。
4、内部类中可以使用外围类的引用,表达式OuterClass.this表示外围类的引用。
5、在外围类的作用域之外,可以这样引用内部类:OuterClass.InnerClass。
new OuterClass().new InnerClass();
6、可以在方法内部定义局部类,局部类不能用public或private访问说明符进行声明。它的作用域被限定在这个局部类的块中。
7、局部类可以访问final修饰的局部变量。
8、定义匿名内部类:
new
SuperType(construction parameters) {
inner class and data;
}
9、匿名类不能有构造器,取而代之的是,将构造器参数传递给超类构造器。尤其是内部类实现接口的时候,不能有任何构造参数:
new
InterfaceType() {
methods and data;
}
10、双括号初始化:
new ArrayList<String>() {
{
add(“Harry”);
add(“Tony”);
}
11、有时候,使用内部类知识为了把一个类隐藏在另外一个类的内部,并不需要内部来引用外围类对象。为此,可以将内部类声明为static,一遍取消产生的引用,这样就定义了一个静态内部类。
1、在Java程序设计语言中,接口不是类,而是对类的一组需求描述,这些类要遵从接口描述的统一格式进行定义。
2、接口中的所有方法自动地属于public。
3、接口绝对不能含有实例域,也不能在接口中实现方法。提供实例域和方法实现的任务应该由实现接口的那个类来完成。
4、使用implements关键字使类实现一个接口。
5、接口不是类,尤其不能使用new运算符实例化一个接口:
x = new Comparable(...) // ERROR
6、然而,尽管不能构造接口的对象,却能声明接口的变量:
Comparable x; // OK
7、可以使用instanceof检查一个对象是否实现了某个接口。
8、类似于建立类的继承关系,接口也可以被扩展。允许存在多条从具有较高通用性的接口到较高专用性的接口的链:
public interface Movable {
void move(double x, double y);
}
public interface Powered extends Moveable {
double milesPerGallon();
}
9、在接口中可以包含常量,接口中的域会被自动设置为public static final。
public interface Powered extends Moveable {
double milesPerGallon();
double SPEED_LIMIT = 95; // a public static final constant.
}
10、每个类只能有一个超类,但是可以实现多个接口。
11、接口可以提供多重集成的大多数好处,同时还能避免多重集成的复杂性和低效性。
12、Java默认的克隆操作时浅拷贝,它并没有克隆包含在对象中的内部对象。
13、进行对象克隆操作时,需要作出下列判断:
① 默认的clone方法能否满足需求。
② 默认的clone方法是否能够通过调用可变子对象的clone得到修补。
③ 是否不应该使用clone。
如果要选择①和②,类必须:
① 实现Cloneable接口。
② 使用public访问修饰符重新定义clone方法。
14、Cloneable是一个标记接口(tagging interface),接口中不包含方法,使用它的唯一目的是可以用instanceof进行类型检查。
15、所有的数组类型均包含一个clone方法,这个方法被设为public,而不是protected。可以利用这个方法创建一个包含所有数据元素的拷贝的新数组:
int[] luckyNumbers = {2, 3, 5, 7, 11, 13};
int[] cloned = luckNumbers.clone();
cloned[5] = 12; // doesn’t change luckyNumbers[5];
内部类
1、内部类(inner class)是定义在另一个类中的类。
2、定义内部类主要基于以下三个原因:
① 内部类方法可以访问该类定义所在的作用域中的数据,包括私有数据
② 内部类可以对同一个包中的其他类隐藏起来。
③ 当想要定义一个回调函数且不想编写大量的代码时,使用匿名内部类比较便捷。
3、内部类既可以访问自身的数据域,也可以访问创建它的外围类的对象的数据域。
4、内部类中可以使用外围类的引用,表达式OuterClass.this表示外围类的引用。
5、在外围类的作用域之外,可以这样引用内部类:OuterClass.InnerClass。
new OuterClass().new InnerClass();
6、可以在方法内部定义局部类,局部类不能用public或private访问说明符进行声明。它的作用域被限定在这个局部类的块中。
7、局部类可以访问final修饰的局部变量。
8、定义匿名内部类:
new
SuperType(construction parameters) {
inner class and data;
}
9、匿名类不能有构造器,取而代之的是,将构造器参数传递给超类构造器。尤其是内部类实现接口的时候,不能有任何构造参数:
new
InterfaceType() {
methods and data;
}
10、双括号初始化:
new ArrayList<String>() {
{
add(“Harry”);
add(“Tony”);
}
11、有时候,使用内部类知识为了把一个类隐藏在另外一个类的内部,并不需要内部来引用外围类对象。为此,可以将内部类声明为static,一遍取消产生的引用,这样就定义了一个静态内部类。
相关文章推荐
- Java学习笔记(接口与内部类)
- Java 学习笔记 (3) -抽象类 abstract 接口 interface 内部类 inner class 继承 extends 实现 implements 包 package
- 黑马程序员-Java学习笔记之抽象类,接口,多态和内部类
- 【黑马程序员】多态、抽象类、接口——Java复习笔记
- Java学习笔记四——接口与内部类
- Java学习笔记(4):接口与内部类
- JAVA复习笔记--------类(二)内部类
- java核心技术笔记 接口与内部类
- Core Java笔记—第6章 接口与内部类
- Java基础笔记-继承、抽象类、接口、多态、内部类、异常
- JAVA学习笔记----接口与内部类
- java笔记-类、接口、内部类
- 《Java核心技术》复习笔记 - 第六章 接口与内部类
- 黑马程序员——Java面向对象之抽象类 接口 内部类笔记
- C\C++ 程序员从零开始学习Android - 个人学习笔记(八) - java基础 - 继承、抽象类、接口、内部类(待续)
- 【黑马程序员】 java笔记——接口与内部类
- 学习笔记 Java_ch04_内部类内部接口 2014.7.27
- JAVA学习笔记-抽象类,接口和内部类
- 黑马程序员Java笔记——抽象类、接口、内部类(拾遗补录)
- java笔记--接口和内部类