一、选择题
(1)哪个操作符可以用来调用对象的构造方法创建一个新的对象?( ) A. + B. new C. instanceof
(2)哪种方法适用于类的所有对象而不是某个单独的对象?( ) A. 通用方法 B. 实例方法 C. 类方法
(3)如果程序里有叫做obj1和obj2的对象,当使用语句“obj2 = obj1”时会发生什么情况?( ) A. 在 obj2 中的实例变量被赋予与 obj1 中相同的值 B. obj2 和 obj1 被认为是同一个变量(对象) C. A 和 B 都不对 (4)如果一个局部变量具有与实例变量相同的名字,如何在局部变量的作用域内引用该实例变量呢?( ) A. 不能那么做,你应该将其中一个变量重新命名 B. 在实例变量名前使用关键字this C. 在名字前使用关键字super
(5)实例变量在类的什么地方被声明?() A. 类的任何地方
B. 在类的所有方法外面
C. 在类声明之后第一个方法之前
二、填空题
(1)为类成员指定____private____访问修饰符,将不允许其他类的成员访问该成员。 (2)对象是____属性____和____方法____的集合。
(3)类的成员变量可分为____类变量(加static)____和____实例变量____两种。 (4)子类通过____super____关键字调用父类的一个构造方法。
三、简答题
指出在下面的程序中,哪些属性和方法发生继承、覆盖和重载。 class Parent{
String first_name; String sex; int age; Parent(){}
Parent(String fName){
first_name=fName; }
void setAge(int a){
if (a>=22)
age=a;
} }
class Son extends Parent{
String sex;
void setAge(int a){
age=a; } }
四、程序设计
(1)编写一个类,求出三个变量 a,b,c 的最大值。
(2)编写一个“学生”类。该类拥有属性:校名、学号、姓名、性别、成绩。方法包含设置姓名和成绩。 (3)在上题的基础上,编写学生的子类:大学生。“大学生”类除了拥有学生的属性和方法以外,还有其自己的属性和方法。属性包括系别、专业;方法包含设置系别和专业。 五、分析题
(1)类A只有一个受保护的方法。 Java代码: package a;
public class A { protected String a; protected String getA() { return a; } }
类B没有代码,只是继承了类A。 Java代码: package b; import a.A;
public class B extends A {}
下面看类C,类C做的事情就是调用类B的方法。 Java代码: package c; import b.B; public class C { public static void main(String[] args) { B b = new B(); System.out.println(b.getA()); } }
执行结果是什么?
(2)分析运行结果。 class Super { public void operation(Super s) { System.out.println(\ } }
class SuperA extends Super { public void operation(SuperA a) { System.out.println(\ }
public void operation(SuperB b) { System.out.println(\ } public void operation(Super s) { System.out.println(\ } }
class SuperB extends Super { public void operation(SuperA a) { System.out.println(\ } public void operation(SuperB b) { System.out.println(\ } public void operation(Super s) { System.out.println(\ } }
public class Test { private static Super a; private static SuperB b; public static void main(String[] args) { b = new SuperB(); a = new SuperA(); a.operation(b); } }
六、观察以下代码的执行结果是什么? class Parent { public void method1() { System.out.println(\ } public void method2() { System.out.println(\ this.method1(); } }
public class Example extends Parent { public void method1() { System.out.println(\ } public static void main(String args[]) { Parent p = new Example(); p.method2(); } }

