Person p = new Person(“张三”,23);这条语句会调用下列哪个构造方法给属性进行初始化()A.public Person(){}B.public Person(String name,int age) { this.name = name; this.age = age; }C.public Person(int age,String name) { this.age = age; this.name = name; }D.public Person(String name) { t

题目
Person p = new Person(“张三”,23);这条语句会调用下列哪个构造方法给属性进行初始化()

A.public Person(){}

B.public Person(String name,int age) { this.name = name; this.age = age; }

C.public Person(int age,String name) { this.age = age; this.name = name; }

D.public Person(String name) { this.name = name; }


相似考题
更多“Person p = new Person(“张三”,23);这条语句会调用下列哪个构造方法给属性进行初始化() ”相关问题
  • 第1题:

    使用VC6打开考生文件夹下的工程test28_3。此工程包含一个test28_3.cpp,其中定义了类Person,但该类的定义并不完整。请按要求完成下列操作,将程序补充完整。

    (1)定义类Person的私有数据成员forename、surname 和 money,forename 和 surname都是char型的指针数据,money是double型的数据。请在注释“//**1**”之后添加适当的语句。

    (2)完成类Person的带三个参数的构造函数Person(char *f, char *s,double m),分别为forename和surname申请新的空间来存储参数f和s指针指向的内容,注意空间的大小,最后把参数m的值赋给money,请在注释“//**2**”之后添加适当的语句。

    (3)完成类Person的析构函数的定义,把forename和surname指向的空间释放,请在注释“//**3**”之后添加适当的语句。

    (4)完成类Person的成员函数display的定义,使其以格式“forname surname has money”的形式输出内容,请在注释“//**4*。”之后添加适当的语句。

    注意:除在指定位置添加语句之外,请不要改动程序中的其他内容。

    输出结果如下:

    Richard Berk has 1000.56

    源程序文件test28_3.cpp清单如下:

    include <iostream.h>

    include <string.h>

    class Person

    {

    private:

    //** 1 **

    double money;

    public:

    Person(char *f, char *s, double m);

    ~Person();

    void display();

    };

    Person::Person(char *f, char *s, double m)

    {

    //** 2 **

    strcpy(forename, f);

    surname = new char[strlen(s)+1];

    strcpy(surname, s);

    money=m;

    }

    Person: :-Person ()

    {

    //** 3 **

    }

    void Person:: display ( )

    {

    //** 4 **

    }

    void main ( )

    {

    Person p("Richard", "Berk", 1000.56);

    p.display ( );

    }


    正确答案:(1) char *forename; char *surname; (2) forename = new char[strlen(f)+1]; (3) delete []forename; delete []surname; (4) coutforename" "surname"has"moneyend1;
    (1) char *forename; char *surname; (2) forename = new char[strlen(f)+1]; (3) delete []forename; delete []surname; (4) coutforename" "surname"has"moneyend1; 解析:主要考查考生对于类的定义和字符指针的动态空间申请和释放的掌握,具中(2)中new关键字是动态申请空间,里面使用了函数strlen,该函数是返回参数字符串的长度,之所以加一是要加入字符串结尾标志,这一点考生切记。(3)中 delete是释放动态内存的关键字,释放一位数组占用的内存格式是先写[],之后是指针名,括号内不写数组的大小。

  • 第2题:

    在下列程序的划线处应填入的语句是class Person { private int a;}public class Man extends Person{ public int b; public static void main (String arg []){ Person p=new Person(); Man t=new Man(); int i: }}

    A.i=w;

    B.i=b

    C.i=p.a;

    D.i=t.b;


    正确答案:D
    解析:选项A)w没有被声明过,不能使用。选项B)虽然b是类Man的public成员变量,但是在静态方法中不能使用类中的非静态成员。选项C)a是类Person的private成员,在类外不能直接引用。选项D)b是类Man的public成员变量,且是int 型,可以通过类的实例变量t用并赋值给一个int型变量。

  • 第3题:

    下列程序中需要清理动态分配的数组,划线处应有的语句是_______。 include class pers

    下列程序中需要清理动态分配的数组,划线处应有的语句是_______。

    include<iostream.h>

    class person

    {

    int age,tall;

    public:

    person( ){age=0;tall=40;cout<<"A baby is born."<<endl;}

    person(int i){age=i;tall=40;cout<<"A old person."<<endl;}

    person(int i,int j){age=i;tall=j;cout<<"a old person with tall."<<endl;)

    ~person( ){cout<<"person dead."<<endl;}

    void show( )

    {

    cout<<"age="<<age<<",tall="<<tall<<endl;

    }

    };

    void main( )

    {

    person*ptr;

    ptr=new person[3];

    ptr[0]=person( );

    ptr[1]=person(18);

    ptr[2]=person(20,120);

    for(int i=0;i<3;i++)

    ptr[i].show( );

    ______

    }


    正确答案:delete[]ptr;
    delete[]ptr; 解析:本题考察对象数组的销毁方法,注意删除对象数组时,[]内不要指定大小。

  • 第4题:

    在下列程序的划线处应填入的语句是( )。 class Person { private int a: } public class Man extends Person{ public int b; public static void main(String arg []){ Person p=newPerson(); Man t=new Man(); int i; _________________ } }

    A.i=w;

    B.i=b;

    C.i=P.a;

    D.i=t.b;


    正确答案:D

  • 第5题:

    在Java语言中,类Worker是类Person的子类,Worker的构造方法中有一句"super()",该语句()。

    • A、调用类Worker中定义的super()方法
    • B、调用类Person中定义的super()方法
    • C、调用类Person的构造函数
    • D、语法错误

    正确答案:C

  • 第6题:

    对于下列代码: 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 2
    • B、 line 3
    • C、 line 6
    • D、 line 7

    正确答案:D

  • 第7题:

    在Java语言中,假设类Worker是类Person的子类,Worker的构造方法中有一句"super();",该语句()

    • A、调用类Worker中定义的super()方法
    • B、调用类Person中定义的super()方法
    • C、调用类Person的构造方法
    • D、语法错误

    正确答案:C

  • 第8题:

    在Person的一个派生类Employee里调用Person类的构造函数正确方式为()。

    • A、base.Person(name,age)
    • B、base(name,age)
    • C、Person(name,age)
    • D、this(name,age)

    正确答案:B

  • 第9题:

    多选题
    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.


    正确答案: D,E
    解析: A:m没有被申明过,不能使用。 
    B:虽然b是类Teacher的public成员变量,但是在静态方法中不能使用类中的非静态成员。 
    C://a是类Person的private成员,在类外不能直接引用。 
    D://change(int m)方法是public方法,并且返回一个int型值,可以通过类的实例变量p引用并赋值给一个int型变量。 
    E://b是类Teacher的public成员变量,且是int型,可以通过类的实例变量t引用并赋值给一个int型变量

  • 第10题:

    单选题
    在Person的一个派生类Employee里调用Person类的构造函数正确方式为()。
    A

    base.Person(name,age)

    B

    base(name,age)

    C

    Person(name,age)

    D

    this(name,age)


    正确答案: B
    解析: 暂无解析

  • 第11题:

    单选题
    对于下列代码: 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 2

    B

     line 3

    C

     line 6

    D

     line 7


    正确答案: B
    解析: 暂无解析

  • 第12题:

    单选题
    类Teacher和Student是类Person的子类;      Person p;      Teacher t;      Student s;   //p, t and s are all non-null.   if(t instanceof Person) { s = (Student)t; }     最后一句语句的结果是:()
    A

     将构造一个Student对象;

    B

     表达式是合法的;

    C

     表达式是错误的;

    D

     编译时正确,但运行时错误。


    正确答案: C
    解析: 暂无解析

  • 第13题:

    给出下列的不完整的类代码,则下列的( )语句可以加到横线处。 class Person{ String name,department; int age public Person(String n){name=n;} public Person(String n,int a){name=n;age=a;} pubilc Person(String n,String d,int a) { _______________ department=d; } }

    A.Person(n,a);

    B.this(Person(n,a));

    C.this(n,a);

    D.this(name,age);


    正确答案:C

  • 第14题:

    在下列程序的划线处应填入的语句是 class Pemon { pnvate int a; } public class Man extends Person { public int b; public static void main(String arg[ ] ) { Person p = new Person( ); Man t = new Man( ); int i; ________ } }

    A.i = w;

    B.i = b;

    C.i = p.a;

    D.i = t.b;


    正确答案:D
    解析:选项A)w没有被声明过,不能使用。选项B)虽然b是类Man的public成员变量,但是在静态方法中不能使用类中的非静态成员。选项C)a是类Person的private成员,在类外不能直接引用。选项D)b是类Man的public成员变量,且是int型,可以通过类的实例变量t引用并赋值给一个int型变量。

  • 第15题:

    给出下列的不完整的类代码,则下列的哪个语句可以加到横线处? class Person { String name,department; int age; public Person( String n ){ name = n;} public Person( String n,int a ) { name = n;age = a;} public Person( String n,String d,int a ) { _____________ department = d; } }

    A.Person(n,a);

    B.this(Person(n,a) );

    C.this(n,a);

    D.this(name,age);


    正确答案:C
    解析:在同一个类的不同构造方法中调用该类的其他构造方法需要使用this(…)的形式,而且必须是在构造方法的第一行调用,这个和普通方法重载调用的方式不同,普通方法可以直接使用方法名加参数来调用,而且调用位置没有限制,因此选项A)是不行的,选项B)的语法就是错误的,选项D)的错误在于在父类型的构造方法被调用前不能引用类的成员。构造方法是一个类对象实例化的开始,因此在构造方法中不能将成员作为参数引用。

  • 第16题:

    已知一个类A,其中Fun()函数是类A的一个成员函数,A*p,a;p=&a;,则下面语句正确的是( )。

    A.语句p=&a;是把对象a赋值给指针变量p

    B.语句A*p,a;p=&a;调用两次类A的构造函数

    C.对语句*p.fun();的调用是正确的

    D.语句 p->fun();和语句 a.fun();等价


    正确答案:D
    解析:A是把对象的地址值赋给指针;B只会调用一次类的构造函数;C正确的调用应是(*p).fun()。

  • 第17题:

    在JAVA中,类Worker是类Person的子类,Worker的构造方法中有一句“super()“,该语句()。

    • A、调用类Worker中定义的super()方法
    • B、调用类Person中定义的super()方法
    • C、调用类Person的构造函数
    • D、语法错误

    正确答案:C

  • 第18题:

    创建对象时系统将调用适当的构造方法给对象初始化。


    正确答案:正确

  • 第19题:

    类Teacher和Student是类Person的子类;      Person p;      Teacher t;      Student s;   //p, t and s are all non-null.   if(t instanceof Person) { s = (Student)t; }     最后一句语句的结果是:()

    • A、 将构造一个Student对象;
    • B、 表达式是合法的;
    • C、 表达式是错误的;
    • D、 编译时正确,但运行时错误。

    正确答案:D

  • 第20题:

    下列关于类的包含描述正确的是()

    • A、可以使用赋值语句对对象成员进行初始化
    • B、可以使用“参数初始式”调用成员类的构造函数初始化对象成员
    • C、被包含类可以访问包含类的成员
    • D、首先执行自身构造函数,再调用成员类的构造函数

    正确答案:B

  • 第21题:

    单选题
    下列关于类的包含描述正确的是()
    A

    可以使用赋值语句对对象成员进行初始化

    B

    可以使用“参数初始式”调用成员类的构造函数初始化对象成员

    C

    被包含类可以访问包含类的成员

    D

    首先执行自身构造函数,再调用成员类的构造函数


    正确答案: B
    解析: 暂无解析

  • 第22题:

    单选题
    在Java语言中,类Worker是类Person的子类,Worker的构造方法中有一句“super()”,该语句()
    A

     调用类Worker中定义的super()方法

    B

     调用类Person中定义的super()方法

    C

     调用类Person的构造函数

    D

     语法错误


    正确答案: A
    解析: 暂无解析

  • 第23题:

    判断题
    创建对象时系统将调用适当的构造方法给对象初始化。
    A

    B


    正确答案:
    解析: 暂无解析