public class Pet{  public void speak(){   System.out.print(“

题目
单选题
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;}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。

第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题:

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

第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题:

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

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。

第7题:

以下程序的运行结果为?

class ValHold{

public int i = 10;

}

public class ObParm{

public static void main(String argv[]){

ObParm o = new ObParm();

o.amethod();

}

public void amethod(){

int i = 99;

ValHold v = new ValHold();

v.i=30;

another(v,i);

System.out.print( v.i );

}

public void another(ValHold v, int i){

i=0;

v.i = 20;

ValHold vh = new ValHold();

v = vh;

System.out.print(v.i);

System.out.print(i);

}

}

A.10030

B. 20030

C. 209930

D. 10020


正确答案:D

第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题:

interface Data { public void load(); }  abstract class Info { public abstract void load(); }  Which class correctly uses the Data interface and Info class?() 

  • A、 public class Employee extends Info implements Data { public void load() { /*do something*/ } }
  • B、 public class Employee implements Info extends Data { public void load() { /*do something*/ } }
  • C、 public class Employee extends Info implements Data { public void load() { /*do something */ } public void Info.load() { /*do something*/ } }
  • D、 public class Employee implements Info extends Data { public void Data.load() { /*dsomething */ } public void load() { /*do something */ } }
  • E、 public class Employee implements Info extends Data { public void load() { /*do something */ } public void Info.load(){ /*do something*/ } }
  • F、 public class Employee extends Info implements Data{ public void Data.load() { /*do something*/ } public void Info.load() { /*do something*/ } }

正确答案:A

更多相关问题