单选题1) class Person {  2) public void printValue(int i, int j) {/*…*/ }     3) public void printValue(int i){/*...*/ }     4) }  5) public class Teacher extends Person {     6) public void printValue() {/*...*/ }     7) public void printValue(int i) {/*...*/}     8) public static void main(String args[]){     9) Person t = new Teacher();     10) t.printValue(10);     11) }    12) }  Which method will the statement on line 10 call? ()A on line 2B on line 3C on line 6D on line 7

单选题
1) class Person {  2) public void printValue(int i, int j) {/*…*/ }     3) public void printValue(int i){/*...*/ }     4) }  5) public class Teacher extends Person {     6) public void printValue() {/*...*/ }     7) public void printValue(int i) {/*...*/}     8) public static void main(String args[]){     9) Person t = new Teacher();     10) t.printValue(10);     11) }    12) }  Which method will the statement on line 10 call? ()
A

 on line 2

B

 on line 3

C

 on line 6

D

 on line 7


参考解析

解析: 变量t是一个Person对象,但是它是用Teacher实例化的,这个问题涉及到java的编译时多态和运行时多态的问题,就编译时多态来说,t实际上是一个Person类,这涉及到类型的自动转换(将一个子类的实例赋值给一个父类的变量是不用进行强制类型转换,反之则需要 
进行强制类型转换,而且被赋值的变量实际上应该是一个子类的对象),如果对t调用了子类中新增的方法则造成编译时错误编译将不能通过,而在运行时,运行时系统将根据t实际指向的类型调用对应的方法,对于本例来说,t.print(10)将调用t实际指向的Teacher类的对应方法。在java中,可以用一个子类的实例实例化父类的一个变量,而变量在编译时是一个父类实例,在运行时可能是一个子类实例。

相关考题:

下列程序段的输出结果是【 】。public class Test {void printValue(int m) {do {System.out.println("The value is"+m);}while (--m>10);}public static void main (String args[]) {int i=10;Test t= new Test();t.printValue(i);}}

能将程序补充完整的选项是( )。class Person{ private int a; public int change(int m){ return m; }}public class Teacher extends Person{ public int b; public static void main(String arg[]) { Person p = new Person(); Teacher t = new Teacher(); int i; ______ }} B.A.i=mB.i=bC. i=p.aD.i=p. change(50)

若类A和类B的定义如下:includeclass A{int i,j;public:int geti(){return i;}};class 若类A和类B的定义如下: #include<malloc.h> class A { int i,j; public: int geti() { return i; } }; class B:public A { int k; public: void make() { k=i*j; } }; 则上述定义中非法的表达式是( )。A.k=i*jB.int k;C.return i;D.void make();

能将程序补充完整的选项是______。 class Person{ private int a; phblic int change(int m){return m;} } public class Teacher extends Person{ public int b; public static void main(String arg[ ]){ Person p=new Person( ); Teacher t=new Teacher( ); int i; ______; } }A.i=mB.i=bC.i=p.aD.i=p.change(50)

以下程序的执行结果是【】。include class B{public:B(){}B(int i.int j); void printb 以下程序的执行结果是【 】。include <iostream.h>class B{public:B(){}B(int i.int j);void printb();private:int a,b;};class A{public:A() { }A(int i,int j);void printa();private:B c;};A:: A(int i,int j):c(i, j){ }void A:: pfinta(){c. printb();}B::B(int i,int j){a=i;b=j;}void B::printb(){cout<<"a="<<a<<",b="<<b<<end1;}void main(){A m(7,9);m. printa();}

若类A和类B的定义如下: class A { int i,j; public: int geti () { return i; } }; class B : public A { int k; public: void make () { k=i*j; } }; 则上述定义中非法的语句是A.k=i*j;B.int k;C.return i;D.void make()

若类A和类B的定义如下:includeclass A{int i*j;public:int geti(){return i;}};class 若类A和类B的定义如下: #include<malloc.h> class A { int i*j; public: int geti() { return i; } }; class B: public A { int k; public: void make() { k=i*j; } ); 则上述定义中非法的表达式是( )。A.k=i*j;B.int k;C.return i;D.void make();

有如下程序: include using namespace std class Base{ int b; public: Base(int i) { 有如下程序:include<iostream>using namespace stdclass Base{int b;public:Base(int i) {b=i;}Void disp ( ) {cout<<"Base:b="<<b<<''; }};class Base1:virtual public Base{public:Base1(int i):Base(i){}};class Base2:virtual public Base{public:Base2(int i):Base(i){}};class Derived:public Basepublic Base1{int d;public:Derived(int i ,int j):Base1(j),Base2(j),【 】{ d=i; }void disp() {cout<<"Derived:d="<<d<<' ';}};int main()Derived objD(1,2);objD. disp()objD. Base::disp();objD. Base1::disp()objD. Base2::disp();return 0;}请将程序补充完整,使程序在运行时输出:Derivd:d=1 Base:b=2 Base:b=2 Base:b=2

若类A和类B的定义如下: class A { int i,j; public: int geti() { return i; } }; class B: public A { int k; public: void make() { k=i*j } }; 则上述定义中A.k=i*j;B.int k;C.return i;D.void make()

有以下程序:include using namespace std;class A{public: A(int i,int j) { a=i; b= 有以下程序: #include <iostream> using namespace std; class A { public: A(int i,int j) { a=i; b=j; } void move(int x,int y) { a+=x; b+=y; } void show() { cout<<a<<","<<b<<end1; } private: int a,b; }; class B: private A { public: B(int i,int j): A(i,j) {} void fun() { move(3,5); } void fl () { A::show(); } }; int main() { B d(3,4); d.fun(); d.f1(); return 0; } 程序执行后的输出结果是A.3,4B.6,8C.6,9D.4,3

有以下程序:include using namespacestd;class A{public:A(int i,int j){ a=1; b=j;} 有以下程序:#include <iostream>using namespace std;class A{public: A(int i,int j) { a=1; b=j; } void move (int x,int y) { a+=x; b+=y; } void show() cout<<a<<","<<b<<end1 } private: int a,b; }; class B : private A { public: B(int i,int 3):A (i,j) {} void fun() { move (3,5); } void f1() { A::show(); } }; int main() { B d(3,4); d.fun(); d.f1(); return 0; } 程序执行后的输出结果是A.3,4B.6,8C.6,9D.4,3

下列程序的输出结果是 classA{ int i,j; A(int i,int j) { this.i=i; this.j=j; } void print( ) { System.out.println("i="+i+""+"j="+j) } class B extends A{ int in; B (int i,int j,int m){ super(a,B) ; this.m=m; } void print( ) { Sytem.out.println("m+"+m);} } class C { public static void main (strang argsⅡ) { B b:new B(1,2,3); b.print( ); } }A.i=1 j=2 m=3B.m=3C.i=3 j=2D.m=1 i=1

若有以下程序include using namespace std;class A{public: A(int i,int j) {a=i;b=j 若有以下程序 #include <iostream> using namespace std; class A { public: A(int i,int j) { a=i; b=j; } void move(int x, int y) { a+=x; b+=y; } void show() { cout < <a < <" , " <<b<< end1; } private: int a,b; }; class B : private A { public: B(int i,int j) :A(i,j) {} void fun ( ) { move (3, 5); } void f1 ( ) { A::show(); } }; int main ( ) { B d(3,4); d. fun ( ); d.f1(); return 0; } 程序执行后的输出结果是 ( )。A.3,4B.6,8C.6,9D.4,3

若有以下程序:include using namespace std;class A{private:int a;public:A(int i){ 若有以下程序: #include <iostream> using namespace std; class A { private: int a; public: A(int i) { a=i; } void disp () { cout<<a<<","; } }; class B { private: int b; public: B(int j) { b=j; } void disp () { cout<<b<<","; } }; class C : public B,public A { private: int c; public: C(int k):A(k-2),B(k+2) { c=k; } void disp () { A::disp(); B::disp(); cout<<c<<endl; } }; int main() { C obj(10); obj.disp(); return 0; }A.10,10,10B.10,12,14C.8,10,12D.8,12,10

若类A和类B的定义如下: class A { public: int i,j; void get(); }; class B:A{ int i, j; protected; int k; public: void make(); }; void B: :make()(k=i*j;} 则其中 ______ 是非法的表达式。A.void get();B.int k;C.void make();D.k=i*j;

以下程序的执行结果是()。includeclass TestClass2{public:TestClass2 (){};TestCla 以下程序的执行结果是( )。 #include<iostream.h> class TestClass2 { public: TestClass2 (){}; TestClass2(int i,int j); void printb(); private: int a,b; }; class TestClass1 { public: TestClass1(){} TestClass1(int i,int j); void printa(); private: TestClass2 c; }; TestClassl::TestClass1(int i,int j):c(i,j) {} void TestClass1::printa() { c.printb(); } TestClass2::TestClass2(int i,int j) { a=i: b=j; } void TestClass2::printb() { cout<<"a="<<a<<","<<"b="<<b<<endl; } void main() { TestClass1 m(7,9); m.prints(); }A.a=7,b=8B.a=8,b=7C.a=7,b=9D.a=8,b=9

若有以下程序:include using namespacestd;class A {private: int a;public:A(int i) 若有以下程序: #include <iostream> using namespace std; class A { private: int a; public: A(int i) { a=i; } void disp() { cout <<a<<","; } }; class B { private: int b; public: B(int j) { b=j; } void disp() { cout<<b<<","; } }; class C: public B,public A { private: int c; public: C(int k):A(k-2),B(k+2) { c=k; } void disp() { A::disp(); B::disp(); cout<<c<<end1; } }; int main() { C obj (10); obj.disp(); return 0; } 程序执行后的输出结果是A.10,10,10B.10, 12,14C.8,10,12D.8,12,10

有以下程序:include using namespace std;class B{private: int a,b;public: B(){} B 有以下程序: #include <iostream> using namespace std; class B { private: int a,b; public: B(){} B(int i,int j); void printb(); }; class A { B C; public: A(){} A(int i,int j); void printa(); }; A::A(int i,int j) :c(i,j) {} void A::printa() { c.printb (); } B::B(int i, int j) { a=i; b=j; } void B: :printb() { cout<<a<<", "<<b<<end1; } int main () { A m(7,8); m.printa(); return 0; } 该程序运行后的输出结果是( )。A.5,6B.7,8C.8,9D.9,10

若有如下程序:includeusing namespace std;class A{public:A(int i,int j){a=i;b=j;} 若有如下程序: #include<iostream> using namespace std; class A { public: A(int i,int j) { a=i; b=j; } void move(int x,int y) { a+=x; b+=y; } void show() { cout<<a<<","<<b<<end1; } private: int a,b; }; class B:private A { public: B(int i,int j):A(i,j) { } void fun() { move(3,5); } void f1() { A::show(); } }; int main() { B d(3,4); d.fun(); d.f1(); return 0; } 程序执行后的输出结果是( )。A.3,4B.6,8C.6,9D.4,3

若有以下程序include using namespace std;class A {public: A(int i,int j) {a=i;b= 若有以下程序 #include <iostream> using namespace std; class A { public: A(int i,int j) { a=i; b=j; } void move(int x,int y) { a+=x; b+=y; } void show() cout<<a<<","<<b<<end1; private int a,b; }; class B: private A { public: B(int i,int j):A(i,j) {} void fun() { move(3,5); } void fl() { A::show(); } int main() { B d(3,4); d. fun(); d.fl(); return 0; } 程序执行后的输出结果是A.3,4B.6,8C.6,9D.4,3

1) class Person { 2) public void printValue(int i, int j) {/*…*/ }    3) public void printValue(int i){/*...*/ }    4) } 5) public class Teacher extends Person {    6) public void printValue() {/*...*/ }    7) public void printValue(int i) {/*...*/}    8) public static void main(String args[]){    9) Person t = new Teacher();    10) t.printValue(10);   11) }    12) } Which method will the statement on line 10 call?()    A、 on line 2B、 on line 3C、 on line 6D、 on line 7

Which are syntactically valid statement at// point x?()     class Person {     private int a;  public int change(int m){  return m;  }     }  public class Teacher extends Person {     public int b;  public static void main(String arg[]){     Person p = new Person();     Teacher t = new Teacher();    int i;  // point x     }    } A、 i = m;B、 i = b;C、 i = p.a;D、 i = p.change(30);E、 i = t.b.

public class Foo {   public static void main (String args) {   int i = 1;   int j = i++;   if ((i++j)  (i++ ==j)) {   i +=j;   }   }   }   What is the final value of i?()  A、 1B、 2C、 3D、 4E、 5

现有:  public  class  TestDemo{     private int X-2;      static int y=3;  public  void method(){      final int i=100;      int j  =10;     class Cinner {  public void mymethod(){      //Here     }     }     }     } 在Here处可以访问的变量是哪些?() A、XB、yC、jD、i

public class Test {  public static void leftshift(int i, int j) {  i=j;  }  public static void main(String args[])  {  int i = 4, j = 2;  leftshift(i, j);   System.out.printIn(i); }  }     What is the result?()  A、 2B、 4C、 8D、 16E、 The code will not compile.

public class TestDemo{   private int x = 2;   static int y = 3;   public void method(){   final int i=100;   int j = 10;   class Cinner{   public void mymethod(){  //Here  }  }  }  }   在Here处可以访问的变量是哪些?()A、xB、yC、iD、j

单选题1) class Person {  2) public void printValue(int i, int j) {/*…*/ }     3) public void printValue(int i){/*...*/ }     4) }  5) public class Teacher extends Person {     6) public void printValue() {/*...*/ }     7) public void printValue(int i) {/*...*/}     8) public static void main(String args[]){     9) Person t = new Teacher();     10) t.printValue(10);     11) }    12) }  Which method will the statement on line 10 call? ()A on line 2B on line 3C on line 6D on line 7

单选题对于下列代码: 1) class Person {   2} public void printValue(int i, int j) {//... }     3} public void printValue(int i){//... }    4} }   5) public class Teacher extends Person { 6} public void printValue( ) {//... }     7} public void printValue(int i) {//...}     8} public static void main(String args[]){     9} Person t = new Teacher( );     10} t.printValue(10);     11} } 第10行语句将调用哪行语句?()A line 2B line 3C line 6D line 7