第六章作业
一、this和super各有几种用法?
- 用法一:表示当前对象引用,常用于形参或局部变量与类的成员变量同名的清醒,使用this.成员名表示这是当前对象的成员。
public class FighterPlane1{
String name="su35";
int missileNum;
void init(String name){
this.name=name;
}
public statics void main(String args[]){
FighterPlane1 fp=new FighterPlane1();
fp.init("f35");
}
}
- this(参数),引起重载的构造方法。
- this指代当前的类生成的对象。(书本p75页)
二、子类对象实例化的具体过程是什么?
子类对象实例化按照以下步骤:
- 为子类对象分配内存空间,对域变量进行默认初始化。静态属性若不赋初值,也在此时进行初始化。
- 绑定构造方法,将new对象中的参数传递给构造方法的形式参数。
- 调用this或super语句,注意二者必居其一,但不能同时存在,执行流程在书本p80页。
- 进行实例变量的显式初始化操作。
- 执行当前构造方法体中的程序代码。
三、类的域变量和方法中定义的局部变量在初始化上有何区别?
类的域变量可以不赋初值,其在生成对象时会进行默认初始化;方法中的局部变量,若未赋初值,编译时会提示。
四、模仿形成抽象类的过程,自选角度,形成一个自己的抽象类,并在程序的类继承和引用中体现抽象类的作用。
五、接口有什么用?自己定义一个接口,并给出实现类和使用类。
六、抽象类和接口的异同点是什么?
同:都通过派生的子类来实现自己内部的功能。不能有自己的对象。都具有继承性。
异:抽象类中的属性可以有域变量,但接口中的属性只能是静态常量。抽象类可以有子对象,但接口和子接口都不能有自己的实例对象,他们只能被类继承后生成类对象;抽象类当中可以有非抽象的方法,可以有零个或多个抽象方法,但接口当中只能有抽象方法。
七、引用比较方法有哪些?
- equals:equals方法是object的方法,因此一般情况下所有类的对象都可以利用它进行比较判断是否指向同一个对象。
- “==”:两边若是对象引用则比较是否指向同一个对象,若是数值,则比较数值是否相等。
(string类比较特殊,string a,需要通过双等号来判断是否指向同一个对象,equals方法被覆盖,用来判断值是否相等。) - instanceof:判断对象是哪个类的。
八、内部类的作用是什么?什么情况下使用匿名内部类?
内部类就是在某个类的内部定义一个类,被内部类嵌入的类成为外部类。将一个类中的一些属性或方法对其他类进行封装,而只对一个类开放时,应该用内部类。
所谓的匿名内部类就是在类中需要实例化这个类的地方,定义一个没有名称的类。
方法一:
new 类A(){
方法体
}
方法二:
new 接口A(){
方法体
}
九、D。
十、什么是数据隐藏?如何证明子类对父类同名方法进行重新定义,只能是方法的覆盖,不是方法的隐藏?
将数据设置为private属性,只有本类中可以访问。看能不能通过对象调用方法,若不能调用方法,说明方法被设置为private属性,不能在类外被调用。
十一、前四句对后,后四句错。