26、什么是内部类?Static Nested Class和Inner
Class的不同。
内部类就是在一个类的内部定义的类。内部可以定义在除参数位置上的任意位置。
1. 静态内部类需要使用static修饰,而普通内部类不能使用static修饰
2. 静态内部类只能定义在和属性同级,普通内部类可以定义在除参数位置以外的任意位置
3. 静态内部类必需有名称,而普通内部类可以是匿名的
4. 静态内部类没有this引用,只此只能访问外部类的静态成员,而普通内部类可以访问外部类的全部成员
5. 静态内部类访问外部类的同名函数时,使用“外部类名.方法名”即可,而普通内部类需要使用“外部类名.this.外部方法”
6. 静态内部类可以定义静态方法,而普通内部类不能定义静态方法,但能定义简单数据类型的静态属性,不能定义引用类型的静态属性。
7. 创建静态内部类的对象的时候,可以直接new 静态内部类名;创建普通内部类的时候,需要先创建外部类的对象,再使用外部类的对象名.new 内部类的类名,例如:
object.new MyClass();
27、内部类可以引用它的包含类的成员吗?有没有什么限制?
1. 如果内部类为静态内部类,只能调用外部类的静态成员;如果有重名成员,需要用“外部类名.成员名”访问;不能调用外部类的对象成员。
2. 如果内部类为非静态内部类,则可以调用外部类的所有成员;如果有重名成员,需要使用“外部类名.this.成员名”
28、Anonymous Inner
Class (匿名内部类)是否可以extends(继承)其它类,是否可以implements(实现)interface(接口)?
匿名内部类可以继承其它类,也可以实现接口,但不能显示使用extends和implements关键字。例如:
继承其它类的:
Thread thread = new Thread() {
public voidrun() {
}
};
实现接口的:
Runnable runnable = new Runnable() {
public voidrun() {
}
};
29、super.getClass()方法和this.getClass()方法返回对象是否相同?
返回的Class对象是同一对象,都是子类的对象。final方法,不允许重写。
想得一个对象的父类对象的引用可以使用object.getClass().getSuperClass()方法。
30、String是最基本的数据类型吗?
基本数据类型包括byte、int、char、long、float、double、boolean和short。
String是引用数据类型,它的类全名是:java.lang.String,是final类型,且这个类是不可变类,对象被创建后,只能读取不能改写,是线程安全的。字符串的拼接运算可以使用“+”,但结果是新字符串。为了提高字符串的拼接运算效率,我们常用StringBuffer和StringBuilder类。