您好,欢迎访问三七文档
1Java习题课1、构造方法的特征?(1)方法名与类名相同,并且是类方法,不能通过对象引用来调用,在创建一个类的对象同时,系统会自动调用该类的构造方法将新对象初始化。(2)不能对构造方法指定类型,它有隐含的返回值,该值由系统内部使用;如果指定了相应的类型,则该方法就不是构造方法。(3)构造方法具有多态性。(4)如果用户在一个自定义类中未定义该类的构造方法,系统将为这个类添加一个默认的空构造方法。但是如果定义了含参数的构造方法,那么系统不再添加这个无参数的构造方法。2、static修饰变量的定义及特点?用static修饰符修饰的数据成员是不属于任何一个类的具体对象,而是属于类的静态数据成员。它被保存在类的内存区的公共存储单元中,而不是保存在某个对象的内存区中。此,一个类的任何对象访问它时,存取到的都是相同的数值。访问方式为通过类名加点操作符来访问,也可通过对象引用来访问。3、访问控制权限的图和表?4、面向对象的主要特征?继承:封装就是利用抽象数据类型(类)将数据类型和基于数据类型的操作绑定在一起,数据被保存在抽象数据类型的内部,系统只有通过授权的操作方法才能够访问数据。封装:Java的继承是通过extends关键字来实现的,即通过extends关键字使两个类发生继承关系。Java的继承只能是单继承,即一个类只允许有一个父类。新定义的类称为子类,它可以从父类那里继承相应的属性和方法。多态:多态是指一个程序中同名但不同方法共存的情况。方法同名表明它们的2最终功能和目的相同,但由于在完成同一功能可能遇到的不同的具体情况,所以需要定义含不同具体的方法。Java提供两种多态机制(重载与覆盖)。5、封装如何实现?(1)数据和基于数据的操作方法构成一个统一体。(2)类的操作方法实现细节被隐藏起来,只是通过操作接口名称进行调用,操作内部的变动不会影响接口使用。6、能否发送消息取决于那些条件?引用必须真实引用了特定的对象,否则会在运行时抛出NullPointerException异常。被访问对象必须定义了相应的属性或方法,否则编译不会通过。被访问的属性或方法必须具有可访问的权限。7、Object有哪些方法?方法名说明Objectclone()将当前对象克隆boolenequals(Objectobj)判断两个引用是否指向同一对象,其参数不能为普通数据类型voidfinalize()对象被释放时使用ClassgetClass()获得当前对象的类对象inthashCode()得到代表对象的一个整数,这个整数在应用程序运行时保持不变StringtoString()得到代表这个对象的字符串Voidnotify用于线程同步中唤醒等待的线程Voidwait()应用于线程同步中的线程等待8、什么是重载和覆盖?重载:在类中定义了多个同名而不同参数的成员方法时,这些方法是重载方法。参数不同是指:参数的个数、类型和顺序不同。覆盖:子类对父类的同名方法(方法名称相同,参数相同,返回类型相同)重新进行定义,即在子类中定义与父类中已定义的相同名而内容不同的方法。9、this和super的用法?this用法:(1)this指代当前对象。主要应用场合:在一些容易混淆的场合,如成员方法的参数名与数据成员同名;成员方法的局部变量名与数据成员同名。(2)this(参数):引用重载的构造方法。(3)this指带对象。3super用法:super能指代父类中的域变量和方法。若子类的域变量名或成员方法名和父类的域变量名或成员方法名相同时,要调用父类的同名方法或使用父类的同域名变量,则可以用super来指代。super用法:(1)super.域变量;super.成员方法(2)super(参数)//调用父类构造函数10、子类对象实例化过程?(1)为对象分配内存空间,对成员变量进行默认的初始化。(2)绑定构造方法,将new中的参数传递给构造方法的形式参数。(3)调用this或super语句(二者必居其一,不能同时存在),有了this,则第四步被省略,但有了super则不省略。(4)进行实例变量的显式初始化操作。(5)执行当前构造方法的方法体中的程序代码。11、构造方法继承的原则?(1)父类构造方法,子类可以在自己的构造方法中使用super来调用,但必须是子类构造方法的第一个可执行语句。(2)如果子类构造方法中没有显式调用父类构造方法,也没有用this调用重载的其它构造方法,则在产生子类的对象时,系统在调用子类构造方法的同时,默认调用父类无参构造方法。若子类构造方法中显式调用了父类构造方法,或使用了this,则不会默认调用父类无参构造方法。(3)综上两点:子类的构造方法必定调用父类的构造方法。如果不显式用super方法,必然隐含调用super()。12、抽象类定义需要注意的问题?(1)抽象类中可以有零个或多个抽象方法,也可以包含非抽象方法。只要有一个抽象方法,类前就必须有abstract修饰,如果没有抽象方法,类前也可以有abstract修饰。(2)抽象类不能创建对象,创建对象的工作由抽象类派生的具体子类来实现,但可以有声明,声明能引用所有具体子类的对象。(3)抽象类和具体类的关系是一般类和特殊类之间的关系,是一种被继承和继承的关系。(4)对于抽象方法来说,在抽象类中只指定其方法名及参数类型,而不必书写其实现代码。(5)在抽象类中,非抽象方法---已实现方法可以调用抽象方法。(6)abstract不能与final并列修饰同一个类;abstract也不能与private、static、native并列修饰同一个方法。13、接口的定义及需要注意的问题?Interface声明格式:[public]interface接口名[extends父接口名列表]{[public][static][final]域类型域名=常量值[public][abstract]返回值方法名(参数列表)[throw异常列表]}(1)接口定义用关键字interface,而不是用class,interface前的修饰符要么为public,要么为缺省。4(2)接口定义的数据成员全是finalstatic(静态常量)。即使没有修饰符,其效果也等效,访问级别要么为public,要么为缺省。(3)接口中没有构造方法;所有成员方法都是抽象方法(与抽象类有所不同)。即使没有修饰符,其效果完全等效,访问级别要么为public,要么为缺省。注:方法前不能修饰为final。(4)接口具有继承性,可通过extends关键字声明接口的父接口。(5)接口和子接口都不能有自己的实例对象,但可以有自己的声明,可以引用那些实现本接口或者子接口的类对象。14、类在实现接口需要注意几点?(1)implements关键字用于接口的实现。一个类可以实现多个接口,在implements后用逗号隔开多个接口的名字。一个接口也可被多个类来实现。(2)接口的实现者可以继承接口中定义的常量,其效果等效于在这个实现类当中定义了一个静态常量。(3)如果实现某接口的类不是抽象类,则它必须实现接口中的所有抽象方法。(4)接口抽象方法的访问限制符如果为缺省或public时,类在实现方法时,必须显式使用public修饰符,否则将被警告为缩小了接口中定义的方法的访问控制范围。15、抽象类和接口相同点和不同点?抽象类接口共同点二者都可具有抽象方法,都不能实例化,但都可以有自己的声明,并能引用子类或实现类对象。不同点属性变量可以有变量不能有,只能是静态常量。成员方法可以有具体方法(而且具体方法可以调用抽象方法)。如果有方法,则全部是抽象方法。实现策略必须有子类继承必须有实现类实现扩展性弱强16、详细描述p106页习题9的执行过程?主方法中创建Z类的对象流程:在类Z中:(1)分配内存空间,类变量y默认初始化(2)绑定构造方法Y()(3)判断构造方法没有this和super;调用super()(4)执行类X流程:1)类变量b默认初始化2)绑定构造方法X()3)类变量显示初始化4)执行类Y流程:1.执行类Y的构造方法2.控制台输出Y回到类X55)执行X()其他代码6)控制台输出X回到类Z(5)执行类Z的流程(6)类变量显示初始化执行类Y流程:1.执行类Y的构造方法2.控制台输出Y(7)执行类Z构造方法中其他代码(8)控制台输出Z
本文标题:Java习题课
链接地址:https://www.777doc.com/doc-2880691 .html