Java认证考试

public class Pet{  public void speak(){   System.out.print(“ Pet ”);  }  }   public class Cat extends Pet{  public void speak(){   System.out.print(“ Cat ”);  }  }   public class Dog extends Pet{  public void speak(){   System.out.print(“ Dog ”);  }  }  

题目

public class Pet{  public void speak(){   System.out.print(“ Pet ”);  }  }   public class Cat extends Pet{  public void speak(){   System.out.print(“ Cat ”);  }  }   public class Dog extends Pet{  public void speak(){   System.out.print(“ Dog ”);  }  }   执行代码   Pet[] p = {new Cat(),new Dog(),new Pet()};   for(int i=0;i〈p.length;i++)   p[i].speak();   后输出的内容是哪项?()  

  • A、Pet Pet Pet
  • B、Cat Cat Cat
  • C、Cat Dog Pet
  • D、Cat Dog Dog
如果没有搜索结果,请直接 联系老师 获取答案。
如果没有搜索结果,请直接 联系老师 获取答案。
相似问题和答案

第1题:

有如下程序: include using namespace std; class Pet{ char name[10]; public: Pet(c

有如下程序:

include<iostream>

using namespace std;

class Pet{

char name[10];

public:

Pet(char*name){strcpy(this->name,name);}

const char*getName()const {return name;}

virtual void call()const=0;

};

class Dog:public Pet{

public:

Dog(char*name):Pet(name){}

void call()const{cout<<"汪汪叫":}

};

class Cat:public Pet{

public:

Cat(char*name):Pet(name){}

void call()const{cout<<"喵喵叫";}

};

int main(){

Pet*pet1=new Dog("哈克"),*pet2=new Cat("吉米");

cout<<pet1->getName();pet1->call();cout<<end1;

cout<<pet2->getName();pet2->call();cout<<end1;

return 0;

}

程序的输出结果是______。


正确答案:哈克汪汪叫 吉米喵喵叫
哈克汪汪叫 吉米喵喵叫 解析:此题考查的是虚函数与多态性。在成员函数的声明前面加上virual关键字,即可把函数声明为虚函数;在C++中,一个基类指针可以用于指向它的派生类对象,而且通过这样的指针调用虚函数时,被调用的是该指针实际所指向的对象类的那个重定义版本。即若基类和派生类中存在一模一样的成员函数,通过该基类指针调用这样的成员函数时,若这个成员函数被定义成虚函数,那么就调用派生类中的;否则就调用基类中的。本题中,在f()函数中,此题中,void call()在基类中被声明为虚函数,在主函数中,语句Pet*pet1=new Dog("哈克"),*pet2=new Cat("吉米");定义了基类的指针per1和pet2,并让它们分别指向派生类对象Dog和Cat。所以通过该指针调用call()时运行的是派生类的版本,分别输出哈克和吉米;而通过该指针调用 getName()运行的是基类的版本,分别输出汪汪叫和喵喵叫。

第2题:

下列程序片段中,能通过编译的是( )。

A.public abstract class Animal{public void speak( );}

B.public abstract class Animal{public void speak( ){};}

C.public class Animal{pubilc abstract void speak( );}

D.public abstract class Animal{pubile abstract void speak( ){};}


正确答案:D
Java中一个类是一个abstract类的子类,它必须具体实现父类的abstract方法。如果一个类中含有abstract方法,那么这个类必须用abstract来修饰(abstract类也可以没有abstract方法)。有abstract方法的父类只声明,由继承他的子类实现。所以选D。

第3题:

下列程序片段中,能通过编译的是

A.public abstract class Animal{ public void speak();}

B.public abstract class Animal{ public void speak(){}}

C.public class Animal{ public abstract void speak();}

D.public abstract class Animal{ public abstract void speak(){}}


正确答案:A

第4题:

10. interface Jumper { public void jump(); }  ......  20. class Animal {}  ......  30. class Dog extends Animal { 31. Tail tail; 32. }  ......  40. class Beagle extends Dog implements Jumper {  41. public void jump() { }  42. }  .......  50. class Cat implements Jumper {  51. public void jump() { }  52. }  Which three are true?()

  • A、 Cat is-a Animal
  • B、 Cat is-a Jumper
  • C、 Dog is-a Animal
  • D、 Dog is-a Jumper
  • E、 Cat has-a Animal
  • F、 Beagle has-a Tail
  • G、 Beagle has-a Jumper

正确答案:B,F

第5题:

class One {  public One() { System.out.print(1); }  }  class Two extends One {  public Two() { System.out.print(2); }  }  class Three extends Two {  public Three() { System.out.print(3); }  }  public class Numbers{  public static void main( String[] argv) { new Three(); }  }  What is the result when this code is executed?() 

  • A、 1
  • B、 3
  • C、 123
  • D、 321
  • E、 The code rims with no output.

正确答案:C

第6题:

有如下程序:

nclude<iostream>

using namespace std;

class Animal{

public:

virtual char*getType()const{return“Animal”;}

virtual char*getVoice()const{return“Voice”;}

};

class Dog:public Animal{

public:

char*getType()const{rgturn“Dog”;}

char*getVoice()const{retum“Woof”;}

};

void type(Animal&A){cout<<a.getType();}

void speak(AnimalA){cout<<a.getVoice();}

int main(){

Dog d.type(D);tout<<“speak”;speak(D);cout<<endl;

return 0;

}

运行时的输出结果是【 】


正确答案:Dog speak Voice
Dog speak Voice 解析:基类中有两个虚函数getType( )和getVoiee( ),在派生类中同样也有。函数type和speak的形参都是Animal类的对象,但是一个是引用调用,另一个不是。当用Animal的派生类Dog类定义的对象调用这两个函数时,type函数会转向:Dog类中的成员函数,而speak函数不会。

第7题:

下列程序片段中,能通过编译的是( )。 A.public abstract class Animal{ public void speak;}S

下列程序片段中,能通过编译的是( )。

A.public abstract class Animal{ public void speak;}

B.public abstract class Animal{ public void speak{);}

C.public class Animal{ pubilc abstract void speak;}

D.public abstract class Animal{ pubile abstract void speak{};}


正确答案:A
A。【解析】Java中一个类是一个abstract类的子类,它必须具体实现父类的abstract方法。如果一个类中含有abstract方法,那么这个类必须用abstract来修饰(abstract类也可以没有abstract方法)。有abstract方法的父类只声明,由继承它的子类实现。所以选A。

第8题:

如下程序的输出结果是______。 include using namespace std; class Pet{ char nam

如下程序的输出结果是______。

include<iostream>

using namespace std;

class Pet{

char name[10];

public:

Pet(char*nanle){strcpy(this->name,name);}

const char*getName( )const{return name;}

virtual void call( )eonst=0;

};

class Dog:public Pet{

public:

Dog(char*name):Pet(name){ }

void call( )eonst{cout<<"汪汪叫";}

};

class Cat:public Pet{

public:

Cat(char*name):Pet(name){ }

void call( )const{eout<<"喵喵叫";}

};

int main( ){

Pet*petl=new Dog("哈克"),*pet2=new Cat("吉米");

eout<<petl->getName( );petl->call( );eout<<endl;

cout<<pet2->getName( );pet2->call( );eout<<endl;

return 0;

}


正确答案:哈克汪汪叫 吉米喵喵叫
哈克汪汪叫 吉米喵喵叫

第9题:

public class Pet{     private String name;     public Pet(){  System.out.print(1);    }  public Pet(String name){        System.out.print(2);    } }  public class Dog extends Pet{     public Dog(String name){        System.out.print(3);    } }  执行new Dog(“棕熊”);后程序输出是哪项?() 

  • A、 23
  • B、 13
  • C、 123
  • D、 321

正确答案:B

第10题:

public class Pet{     private String name;     public Pet(String name){       this.name = name;    }  public void speak(){     System.out.print(name); }  }  public class Dog extends Pet{     public Dog(String name){       super(name);    }  public void speak(){    super.speak();  System.out.print(“ Dog ”);    } }  执行代码   Pet pet = new Dog(“京巴”);  pet.speak();  后输出的内容是哪项?() 

  • A、 京巴
  • B、 京巴 Dog
  • C、 null
  • D、 Dog京巴

正确答案:B

更多相关问题