1.this和super各有几种用法?
this三种用法:
用法一:表示当前对象引用,常用于形参或局部变量与类的成员变
量同名的情形,使用this.成员名表示当前对象的成员
用法二:表示当前对象
用法三: 调用当前类的构造方法
super访问当前类的直接父类,主要应用场合:
子类的数据成员或成员方法与父类的数据成员或成员方法名字相同时,当要调用父类的同名方法或同名数据成员时则可用super来指明。即super.数据成员;super.成员方法super(参数) , 表示调用父类构造方法
2.子类对象实例化的具体过程是什么?
1.为对象分配内存空间,对成员变量进行默认的初始化
2.绑定构造方法,将new中的参数传递给构造方法的形式参数。
3.调用this或super语句(二者必居其一,不能同时存在),执行流程如图所示
4.进行实例变量的显式初始化操作, 如:
public class A{
int value=4; //显式初始化
B b = new B(); //显式初始化,注:B为另一个类
}
5.执行当前构造方法的方法体中的程序代码。
3.类的域变量和方法中定义的局部变量在初始化上有何区别?
类的域变量中的局部变量:
static声明的变量在类未被实例化的时候就已经被初始化了,而且这个关键字修饰的变量在所在类的所有实例化中只存在一个。
final声明的变量表示变量不可被修改,一经初始化就不变了:但是,这里有两种情况,一是final声明的基本数据——不可被改变;二是引用类型数据,也就是对象数据表示其引用不可修改(想象成公寓,房子位置不变,里面住的人是可以变的)。
static final声明的数据可以理解为全局常量。
类的方法中的局部变量:
方法被调用时产生; 在该方法退出后结束; 必须显式初始化
5.接口有什么作用?
参考这一篇:
6.抽象类与接口的异同点是什么?
7.引用比较方法有哪些?
1.equals方法
2.使用“==”比较
3.instanceof方法
8.内部类的作用是什么?什么情况下使用匿名内部类?
内部类概述:
把类定义在其他类的内部,这个类就被称为内部类。
举例:在类A中定义了一个类B,类B就是内部类。
内部的访问特点:
1.内部类可以直接访问外部类的成员,包括私有。
2.外部类要访问内部类的成员,必须创建对象。
内部类的使用时机:
1、实现事件监听器的时候
2、编写事件驱动时
3、在能实现功能的情况下,为了节省编译后产生的字节码
匿名内部类的使用时机:
匿名内部类是内部类的一种特殊情况。它只有一个实例,而且没有引用。所以,一般在能用内部类实现,但是实例只用一次的情况下使用它。
10.什么是数据隐藏?如何证明子类对父类同名方法进行重新定义,只能是方法的覆盖,而不是方法的隐藏?
如果在子类中对从父类继承来的成员变量进行重新定义,即出现了子类变量对父类变量的隐藏。所谓隐藏是指子类拥有两个相同名字的变量,一个是继承自父类,另一个是由自己定义的。当子类执行它自己定义的方法时,如果操作该变量,所操作的是它自己定义的变量,而把继承自父类的变量“隐藏”起来。当子类执行从父类继承的操作时,如果操作该变量,所操作的是继承自父类的成员变量。要想执行父类的属性则需要调用super。