输出null
第10行编译报错
第11行编译报错
输出Jema
第1题:
阅读下面代码 abstract class Person { public Person(String n) { name=n; } public______String getDescription(); public String getName() { return name; } private String name; } 在下画线处应填入的修饰符是
A.static
B.abstract
C.protected
D.final
第2题:
为使下列代码正常运行,应该在下画线处填入的选项是( )。 abstract class person{ public Person(String n){ name=n: } Public String getDescription; public String getName{ return name; } private string name; }
A.static
B.private
C.abstract
D.final
第3题:
【Java代码】
import Java.util.ArrayList;
import java.util.List;
(1) class AbstractFile{
protected String name;
public void printName(){System.out.println(name);}
public abstract boolean addChild(AbstractFile file);
public abstract boolean removeChild(AbstractF ile file);
public abstract List<AbstractFile> getChildren();
}
class File extends AbstractFile{
public File(String name){this.name=name;}
public boolean addChild(AbstractFile file){return false;}
public boolean removeChild(AbstractFile file){return false;}
public List<AbstractFile> getChildren(){return (2) ;}
}
class Folder extends AbstractFile{
private List <AbslractFile> childList;
public Folder(String name){
this.name=name;
this.childList=new ArrayList<AbstractFile>();
}
public boolean addChild(AbstractFile file) { return childList.add(file);}
public boolean removeChild(AbstractFile file){return childList.remove(file);}
public (3) <AbstractFile> getChildren(){return (4) ;}
}
public class Client{
public static void main(String[] args){
//构造一个树形的文件/目录结构
AbstractFile rootFolder= new Folder("c:\\ ");
AbstractFile compositeFolder=new Folder("composite");
AbstractFile windowsFolder=new Folder("windows");
AbstractFile file=new File("TestComposite.java");
rootFolder.addChild(compositeFolder) ;
rootFolder.addChild(windowsFolder);
compositeFolder.addChild(file) ;
//打印目录文件树
printTree(rootFolder);
}
private static void printTree(AbslractFile ifile){
ifile.printName();
List <AbslractFile> children=ifile.getChildreno:
if(children==null) return;
for (AbstractFile file:children) {
(5) ;
}
}
}
该程序运行后输出结果为:
c:\
composite
TestComposite.java
Windows
第4题:
public class Employee{ private String name; public Employee(String name){ this.name = name; } public String getName(){ return name; } } public class Manager extends Employee{ private String department; public Manager(String name,String department){ this.department = department; super(name); (应于上一行掉位置) System.out.println(getName()); } } Super的位置是否在方法的首行 执行语句new Manager(“smith”,”SALES”)后程序的输出是哪项?()
第5题:
第6题:
interface Playable {
void play();
}
interface Bounceable {
void play();
}
interface Rollable extends Playable, Bounceable {
Ball ball = new Ball("PingPang");
}
class Ball implements Rollable {
private String name;
public String getName() {
return name;
}
public Ball(String name) {
this.name = name;
}
public void play() {
ball = new Ball("Football");
System.out.println(ball.getName());
}
}
这个错误不容易发现。
错。"interface Rollable extends Playable, Bounceable"没有问题。interface 可继承多个
interfaces,所以这里没错。问题出在interface Rollable 里的"Ball ball = new Ball("PingPang");"。
任何在interface 里声明的interface variable (接口变量,也可称成员变量),默认为public static
final。也就是说"Ball ball = new Ball("PingPang");"实际上是"public static final Ball ball = new
Ball("PingPang");"。在Ball 类的Play()方法中,"ball = new Ball("Football");"改变了ball 的
reference,而这里的ball 来自Rollable interface,Rollable interface 里的ball 是public static final
的,final 的object 是不能被改变reference 的。因此编译器将在"ball = new Ball("Football");"
这里显示有错。
第7题:
阅读以下说明和Java代码,将应填入(n)处的字句写在对应栏内。
[说明]
在一些大型系统中,大多数的功能在初始化时要花费很多时间,如果在启动的时候,所有功能(连不用的功能)都要全面初始化的话,会连带影响到应用软件要花很多时间才能启动。因此常将程序设计成到了实际要使用某种功能的阶段才初始化该功能。
以下示例展示了Proxy(代理)模式,PrinterProxy类执行一些比较“轻”的方法——设置名称和取得名称,需要真正执行“重”的方法——真正打印——时才初始Print类。图6-1显示了各个类间的关系。
[图6-1]
[Java代码]
//Printable.Java
publiC (1) Printable{
public abstract void setPrinterName(String name);
public abstract String getprinterName();
public abstract void print(String string);
}
//Printer.Java
public class Printer implements Printable{
private String name;
public Printer(){
System.out.println("正在产生Printer的对象实例");
}
public Printer(String name){
this.name=name;
heavyJob("正在产生Printer的对象实例("+name+")");
public void setPrinterName(String name){
this.name=name;
public String getPrinterName(){
return name;
public void print(String string){
System.out.println("===" +name+" ====");
System.out.println(string);
}
}
//PrinterProxy.Java
public class PrinterProxy (2) Printable{
private String name;
private Printer real;
public PrinterProxy(){}
public PrinterProxy(String name){
this.name=name;
}
public gynchronized void setPrinterName(String name){
if( (3) ){
real.setPrinterName(name);
}
this.name=name;
}
public String getprinterName(){
return name;
}
public void print(String string){
(4);
real.print(string);
}
private synchronized void realize(){//产生真正的Printer对象
if(real==null){
real=(5);
}
}
}
(1)
第8题:
阅读以下说明和java代码,将应填入(n)处的字句写在对应栏内。
[说明]
有若干教师,每个教师只有姓名,一个教师可以指导多名研究生;每名研究生有姓名和研究方向,程序最后输出每个教师指导的所有研究生的姓名和研究方向。
[Java程序]
public class Teacher {
String name;
int top=0;
Student[] student=new Student[20];
public Teacher() {}
public Teacher(String name) { this.name=name;}
boolean add(Student stu){
int len=this.student.length;
if (top<len-1) {
this.student[top]=siu;
(1);
return true;
}
else
return (2);
}
void disp(){
System.out.println(“指导老师"”+this.name);
System.out.println(“研究生:”);
for(int i=0;i<(3);i++){
System.out.println(“姓名:”+this.student[i].name+“\t研究方向:”+this.student[i]. search);
}
}
public static void main(String[] args){
Teacher t[]={new Teacher(“李明”),new Teacher(“王华”)};
Student s1 = new Student(“孙强”,“数据库”);
Student s2 = new Student(“陈文”,“软件工程”);
Student s3 = new Student(“章锐”,“计算机网络”);
if(! t[0].add(s1)) {System.out.println(“每个老师最多只能指导20个学生!”);}
if(! t[0].add(a2)) {System.out.println(“每个老师最多只能指导20个学生!”);}
if(! t[1].add(s3)) {System.out.println(“每个老师最多只能指导20个学生!”);}
for(int i=0;i<2;i++)
(4);
}
}
class (5) {
String name;
String search;
public Student(){}
public Student(String name,String search){
this.name=name;
this.search=search;
}
String getName(){return this.name;}
String getSearch(){return this.search;}
}
第9题:
执行以下代码后,下面哪些描述是正确的() public class Student{ private String name = “Jema”; public void setName(String name){ this.name = name; } public String getName(){ return this.name; } public static void main(String[] args){ Student s; System.out.println(s.getName()); } }
第10题:
Which declarations will allow a class to be started as a standalone program?()