A、 Inner in = new Inner() B、Inner in = new Outer.Inner();
C、 Outer.Inner in = new Outer.Inner(); D、Outer.Inner in = new Outer().new Inner(); 四、程序分析题
阅读下面的程序,分析代码是否能够编译通过,如果能编译通过,请列出运行的结果。否则请说明编译失败的原因。
代码一:不能,secret是私有成员,只能类内部访问(程序不能编译通过,因为在类A中的成员变量secret用private修饰,所以在类Test1中无法访问)
class A { }
public class Test1 { }
public static void main(String[] args) { }
A a = new A();
System.out.println(a.secret++); private int secret = 5;
代码二:250(程序不能编译通过,因为在静态方法method()中不能访问非静态成员变量x。)
public class Test2 { }
int x = 50;
static int y =200 ;
public static void method() { }
public static void main(String[] args) { }
Test2.method();
System.out.println(x+y);
代码三:Inner为私有内部类,不允许外部访问(inner)Inner inner = new Outer().new Inner();可以用外部类访问内部类
public class Outer {
public String name=\private class Inner {
String name=\void showName(){
}
}
}
System.out.println(name);
public static void main(String[] args) { }
Inner inner = new Outer().new Inner(); System.out.println(inner.name);
五、简答题
1、构造方法和普通的成员方法有什么区别?
构造方法是类的一个特殊成员,它会在类实例化对象时被自动调用。而普通方法只有在使用的时候才会被调用。在定义构造方法时要求方法名与类名相同、在方法名的前面没有返回值类型的声明、在方法中不能使用return语句返回一个值
2、单例设计模式具备哪些特点?
单例模式可以保证在整个程序运行期间针对该类只存在一个实例对象。
六、编程题
1、请按照以下要求设计一个学生类Student,并进行测试。 要求如下:
1)Student类中包含姓名、成绩两个属性
2)分别给这两个属性定义两个方法,一个方法用于设置值,另一个方法用于获取值.
3)Student类中定义一个无参的构造方法和一个接收两个参数的构造方法,两个参数分别为姓名和成绩属性赋值
4)在测试类中创建两个Student对象,一个使用无参的构造方法,然后调用方法给姓名和成绩赋值,一个使用有参的构造方法,在构造方法中给姓名和成绩赋值
2、定义一个Father和Child类,并进行测试。
要求如下:
1)Father类为外部类,类中定义一个私有的String类型的属性name,name的值为“zhangjun”。 2)Child类为Father类的内部类,其中定义一个introFather()方法,方法中调用Father类的name属性。
3)定义一个测试类Test,在Test类的main()方法中,创建Child对象,并调用introFather ()方法。
第4章 面向对象(下)
一、填空题
1、在Java语言中,允许使用已存在的类作为基础创建新的类,这种技术我们称为继承______。 2、一个类如果实现一个接口,那么它就需要实现接口中定义的全部_方法_____,否则该类就必须定义成_抽象类_____。
3、在程序开发中,要想将一个包中的类导入到当前程序中,可以使用_import_____关键字。 4、一个类可以从其它的类派生出来,派生出来的类称为_子类_____,用于派生的类称为_基类_____或者__父类____。
5、 JDK中定义了大量的异常类,这些类都是_Exception_____类的子类或者间接子类。 6、定义一个Java类时,如果前面加使用_final_____关键字修饰,那么该类不可以被继承。 7、如果子类想使用父类中的成员,可以通过关键字__super____引用父类的成员。 8、在Java语言中,所有的类都直接或间接继承自_Object_____类。
9、异常的捕获通常由try、catch两部分组成,_try_____代码块用来存放可能发生异常,_catch_____代
码块用 来处理产生的异常。
10、在Java语言中,要想是将一个已编译的类打包成jar文件,可以使用的命令是_jar-cvf_____,要想
在命令行窗口运行jar文件,可以使用的命令是__java-jar___。
二、判断题
1、抽象方法必须定义在抽象类中,所以抽象类中的方法都是抽象方法。错 2、Java中被final关键字修饰的变量,不能被重新赋值。对 3、不存在继承关系的情况下,也可以实现方法重写。错 4、package声明语句应当为Java源文件中的第一条语句。对 5、接口中只能定义常量和抽象方法。错(对) 三、选择题
1、在类的继承关系中,需要遵循以下哪个继承原则?B
A、多重 B、单一 C、双重 D、不能继承 2、在Java语言中,以下哪个关键字用于在方法上声明抛出异常?C
A.try B.catch C.throws D.throw
3、关于super关键字以下说法哪些是正确的?(多选)ABD(ABC)
A、super关键字可以调用父类的构造方法 B、super关键字可以调用父类的普通方法 C、super与this不能同时存在于同一个构造方法中 D、super与this可以同时存在于同一个构造方法中 4、以下说法哪些是正确的?(多选)ABCD
A、Java语言中允许一个类实现多个接口 B、Java语言中不允许一个类继承多个类
C、Java语言中允许一个类同时继承一个类并实现一个接口 D、Java语言中允许一个接口继承一个接口
5、类中的一个成员方法被下面哪个修饰符修饰,该方法只能在本类被访问?C
A、public B、 protected C、 private D、default 6、关于抽象类的说法哪些是正确的?(多选)AC
A、抽象类中可以有非抽象方法。
B、如果父类是抽象类,则子类必须重写父类所有的抽象方法。 C、不能用抽象类去创建对象。 D、接口和抽象类是同一个概念。
7、在Java中,要想让一个类继承另一个类,可以使用以下哪个关键字?C
A、inherits B、implements C、extends D、modifies 8、System类位于以下哪个包中?D
A、java.io B、java.util C、java.awt D、java.lang 9、已知类的继承关系如下: A
class Employee;
class Manager extends Employee; class Director extends Employee; 则以下语句能通过编译的有哪些?
A、 Employee e=new Manager(); B、 Director d=new Manager(); C、 Director d=new Employee(); D、Manager m=new Director(); 10、编译运行下面的程序,结果是什么?B
public class A { }
class B extends A {
void test() {
public static void main(String[] args) { }
void test() { }
System.out.print(\B b = new B(); b.test();