JAVA考核题-面向对象选择题(答案)

技术改变世界 创新驱动发展

}

}

// prtMsg的方法体

System.out.println(id + name);

3、改正下面程序段中的错误(共5处)

public class Student{ String id; String name; int salary;

public void Test(String id, String name, int salary){ //1:意图为该方法为构造方法,需去掉返回值,并改正方法名 this.id = id; this.name = name; this.salary = salary; }

public void changeInfo(String id, int salary){ //2:返回值改为boolean boolean result;

if(id == this.id){ //3:==改为equals()方法 this.salary = salary;

result = TRUE; //4:改为true

}else{

result = false;

}

return result;

}

public booleanchangeInfo(String ids, intsalarys){ //5:方法重复定义,并不是重载 ?? } }

4、写一个Singleton出来。

解答:

解析:Singleton模式主要作用是保证在Java应用程序中,一个类Class只有一个实例存在。它必须自行创建这个唯一的实例,必须自行向整个系统提供这个实例。使用单例模式的一个必要条件:在一个系统中要求只有一个类的实例时应当使用单例模式,反过来说如果一个类可以有几个实例共存,那么就没有必要使用单例类。

一般Singleton模式通常有以下几种形式。 (1)第一种形式-饿汉式单例类:

定义一个类,它的构造函数为private的,它有一个static的private的该类变量,在类初始化时实例化,通过一个public的getInstance方法获取对它的引用,继而调用其中的方法。

public class Singleton {

您的未来就是我们的未来

技术改变世界 创新驱动发展

// 在自己内部定义自己一个实例,是不是很奇怪? private static Singleton instance = new Singleton(); // 注意这是private 只供内部调用 private Singleton() { } // 这里提供了一个供外部访问本class的静态方法,可以直接访问 public static Singleton getInstance() { return instance; } }

(2)第二种形式-懒汉式单例类:第一次调用才初始化。 public class GoodSingleton { // 在自己内部定义自己一个实例,是不是很奇怪? private static GoodSingleton instance = null; // 注意这是private 只供内部调用 private GoodSingleton() { } //这个方法比上面有所改进,不用每次都进行生成对象,只是第一次 //使用时生成实例,提高了效率

public static synchronized GoodSingleton getInstance() { if(instance == null){ return new GoodSingleton(); }else{ return instance; } } }

//懒汉式的另一种改进

public class GoodSingleton { // 在自己内部定义自己一个实例,是不是很奇怪? private volatile static GoodSingleton instance; // 注意这是private 只供内部调用 private GoodSingleton() { } // 两次检查 public static GoodSingleton getInstance1() { if (instance == null) {

您的未来就是我们的未来

技术改变世界 创新驱动发展

synchronized (GoodSingleton.class) { if (instance == null) { instance = new GoodSingleton(); } } } return instance; } }

(3)登记式单例类:为了克服饿汉式和懒汉式单例类不可继承的缺点而设计的。 5、补足代码

packagelianxi; interface Interface { }

class Test{ }

public class Lianxi{ } 答案:

interface Interface { }

class Test{

void method();

//补上代码,通过匿名内部类

public static void main(String[] args) { }

Test.function().method();

void method();

public static Interface function() {

//补上代码,通过匿名内部类 return new Interface(){

public void method() {

System.out.println(\

您的未来就是我们的未来 技术改变世界 创新驱动发展

}

}

};

}

public class Lianxi{ }

public static void main(String[] args) { }

// 解析:读懂本句代码是解题关键 Test.function().method();

您的未来就是我们的未来

联系客服:779662525#qq.com(#替换为@) 苏ICP备20003344号-4