已知两个类R、S,类R中定义了一个私有方法F1和一个公有方法F2;类S中定义了一个公有方法 F3,类S为类R的派生类。它们的继承方式如下所示 class S:public R{…); 以下关于类S的描述中,正确的是(51)。A.类S的对象可以访问F1,但不能访问F2B.类S的对象可以访问F2,但不能访问F1C.类S的对象既可以访问F1,也可以访问F2D.类S的对象既不能访问F1,也不能访问F2

题目

已知两个类R、S,类R中定义了一个私有方法F1和一个公有方法F2;类S中定义了一个公有方法 F3,类S为类R的派生类。它们的继承方式如下所示 class S:public R{…); 以下关于类S的描述中,正确的是(51)。

A.类S的对象可以访问F1,但不能访问F2

B.类S的对象可以访问F2,但不能访问F1

C.类S的对象既可以访问F1,也可以访问F2

D.类S的对象既不能访问F1,也不能访问F2


相似考题
更多“已知两个类R、S,类R中定义了一个私有方法F1和一个公有方法F2;类S中定义了一个公有方法 F3,类S为类 ”相关问题
  • 第1题:

    已知3个类O、P和Q,类O中定义了一个私有方法P1、一个公有方法F2和一个受保护的方法F3:类P和类Q是类O的派生类,其继承方式如下所示:

    classP:protected O{...};

    classQ:public O{...};

    关于方法门的描述中正确的是(34);关于方法F2的描述中正确的是(35);关于方法F3的描述中正确的是(36)。

    A.方法F1无法被访问

    B.只有在类O内才能访问方法F1

    C.只有在类P内才能访问方法F1

    D.只有在类Q内才能访问方法F1


    正确答案:B
    解析:本题考查的是面向对象程序设计中的继承机制。
      继承机制是面向对象技术提供的另一种解决软件复用问题的途径,即在定义一个新的类时,先把一个或多个已有类的功能全部包含进来,然后再给出新功能的定义或对已类的功能重新定义。
      在继承关系中存在两个类:基类和派生类。继承的方式有3种:public、private和 protected。在不同的继承方式下,派生类对基类成员的访问权限不同,外界对派生类成员的能见度也不同。
      1)基类中成员在派生类中的访问权限
      . public继承方式:不改变基类中成员的访问权限。
      . private继承方式:派生类所继承的基类成员的访问权限都改为private。
      . protected继承方式:基类中private成员的访问权限不变,其余的都改为protected。
      2)派生类所继承的基类成员的外部能见度(外界对基类成员的访问权限)
      . 基类的private成员,只有基类的成员函数可以访问,派生类不能访问。
      . 通过private方式继承的基粪成员(非private成员),只有派生类的成员函数可以访问,外界以及派生类的子类都不能访问。
      通过protected方式继承的基类成员(非private成员),只有派生类以及该派生类的子类(非private方式产生的)可以访问,外界不能访问。
      根据上述规则,类P和Q的成员函数及其访问控制如下表所示:

    方法F1是基类O的private成员,虽然类P和Q继承了这个方法,但是只有在基类 O的内部才能访问方法P1。因此第 (34)空应选择答案B。
      方法F2在类P中的访问控制为protected,因此在类P的内部该方法可以被访问,而类P的对象无法访问该方法;由此就可以判断出选项A和B是错误的;由于方法F2在类O和Q中的访问控制均为public,故类O和Q的对象都可以访问该方法。由此可见选项D所给出的“只有在类P内才能访问方法F2”是不正确。第(35)空的正确答案应该为C。
      方法F3在类O、P、Q中的访问控制均为protected,该方法只有在这3个类的内部才能被访问,故第(36)空的正确答案为B。

  • 第2题:

    已知3个类O、P和Q,类O中定义了一个保护方法F1和公有方法F2;类P中定义了一个公有方法F3,类P为类O的派生类;类O为类P的派生类,它们的继承方式如下,在关于类P的描述中正确的是(43);在关于类Q的描述中正确的是(44)。

    class P:private O(…)

    class Q:protected P(…)

    (53)

    A.类P的对象可以访问F1,但不能访问F2

    B.类P的对象可以访问F2,但不能访问F1

    C.类P的对象既可以访问F1,也可以访问F2

    D.类P的对象既不能访问F1,也不能访问F2


    正确答案:C

  • 第3题:

    己知3个类O、P和Q,类O中定义了一个私有方法F1、一个公有方法F2和一个受保护的方法F3:类P和类Q是类O的派生类,其继承方式如下所示:

    class P:protected O {…};

    class Q:public O {…};

    关于方法F1的描述中正确的是(1);关于方法F2韵描述中正确的是(2);在关于方法F3的描述中正确的是(3)。

    (1)

    A.方法F1无法被访问

    B.只有在类。内才能访问方法F1

    C.只有在类P内才能访问方法Fl

    D.只有在类Q内才能访问方法F1


    正确答案:B

  • 第4题:

    己知3个类O、P和Q,类O中定义了一个私有方法F1、一个公有方法F2和一个受保护的方法F3;类P和类Q是类O的派生类,其继承方式如下所示。

    关于方法F1的描述中正确的是(41);关于方法F2的描述中正确的是(42);关于方法F3的描述中正确的是(43)。

    A.方法F1无法被访问

    B.只有在类O内才能访问方法F1

    C.只有在类P内才能访问方法F1

    D.只有在类Q内才能访问方法F1


    正确答案:B

  • 第5题:

    采用面向对象程序设计语言C++/Java进行系统实现时,定义类S及其子类D。若类S中已经定义了一个虚方法intfun(inta,intb),则方法覆盖/重置不能同时在类S中。D中定义方法intfun(inta,intb),这一现象称为()。

    A.覆盖/重置

    B.封装

    C.重载/过载

    D.多态


    正确答案:A

  • 第6题:

    已知3个类O、P和Q,类O中定义了一个私有方法F1、一个公有方法 F2和一个受保护的方法F3:类P和类Q为类O的派生类,其继承方式如下所不:

    class P:protected O{...}

    class Q;public O{…}

    在关于方法F1的描述中正确的是(54)。在关千方法F2的描述中正确的是(55)。在关于方法F3的描述中正确的是(56)。

    A.方法F1无法被访问

    B.只有在类O内才能访问方法n

    C.只有在类P内才能访问方法F1

    D.只有在类Q内才能访问方法F1


    正确答案:B

  • 第7题:

    采用面向对象程序设计语言C++/Java进行系统实现时,定义类S及其子类D。若类S中已经定义了一个虚方法int fun(int a,int b) ,则方法(44)不能同时在类S中。D中定义方法int fun(int a,int b) ,这一现象称为(45)。

    A.int fun(int x,double y)
    B. int fun(double a,int b)
    C.double fun(int x,double y)
    D.int fun(int x,int y)

    答案:D
    解析:
    在同一类中是不能定义两个名字相同、参数个数和类型都相同的函数的,否则就是重复定义,但是在类的继承层次结构中,在不同的层次中可以出现名字相同、参数个数和类型都相同而功能不同的函数。虚函数的作用是允许在派生类中重新定义与基类同名的函数,并且可以通过基类指针或引用来访问基类和派生类中的同名函数。 重载是在同一类中允许同时存在一个以上的同名方法,只要这些方法的参数个数或类型不同即可,而重置(覆盖)是子类重新定义父类中己经定义的方法,即子类重写父类方法。

  • 第8题:

    定义类ClassPerson(privatevalname:String){},以下说法正确是?()

    • A、name是对象私有字段
    • B、name是类私有字段,有私有的getter方法
    • C、name是类公有字段,有公有的getter和setter方法
    • D、name是类私有字段,可以在类内部被改变

    正确答案:B

  • 第9题:

    在一个课程注册系统中,定义了类CourseSchedule和类Course,并在类CourseSchedule中定义了方法add(c:Course)和方法reInove(c:Course),则类CourseSchedule和类Course之间的关系是:()

    • A、泛化关系
    • B、组合关系
    • C、依赖关系
    • D、包含关系

    正确答案:C

  • 第10题:

    Java中,如果一个类定义了抽象方法,该类也必须被定义为抽象类。


    正确答案:正确

  • 第11题:

    判断题
    Java中,如果一个类定义了抽象方法,该类也必须被定义为抽象类。
    A

    B


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

  • 第12题:

    单选题
    在一个课程注册系统中,定义了类CourseSchedule和类Course,并在类CourseSchedule中定义了方法add(c:Course)和方法reInove(c:Course),则类CourseSchedule和类Course之间的关系是:()
    A

    泛化关系

    B

    组合关系

    C

    依赖关系

    D

    包含关系


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

  • 第13题:

    已知3个类O、P和Q,类O中定义了一个私有方法F1和一个公有方法F2;类P中定义了一个公有方法F3,类P为类O的派生类;类Q为类P的派生类,它们的继承方式如下所示:

    class P:public O{…};

    class Q:private P{…};在关于类P的描述中正确的是(43);在关于类Q的描述中正确的是(44)。

    A.类P的对象可以访问F1,但不能访问F2

    B.类P的对象可以访问F2,但不能访问F1

    C.类P的对象既可以访问F1,也可以访问F2

    D.类P的对象既不能访问F1,也不能访问F2


    正确答案:B
    解析:继承机制是面向对象技术提供的另一种解决软件复用问题的途径,即在定义一个新的类时,先把一个或多个已有类的功能全部包含进来,然后再给出新功能的定义或对已有类的功能重新定义。
      在继承关系中存在两个类:基类和派生类。继承的方式有3种:public、private和 protected。在不同的继承方式下,派生类对基类成员的访问权限不同,外界对派生类成员的能见度也不同。
      . 基类中成员在派生类中的访问权限
        ◆ public继承方式:不改变基类中成员的访问权限。
        ◆ private继承方式:派生类所继承的基类成员的访问权限都改为private。
        ◆ protected继承方式:基类中private成员的访问权限不变,其余的都改为
          protected。
      . 派生类所继承的基类成员的外部能见度(外界对基类成员的访问权限)
        ◆ 基类的private成员,只有基类的成员函数可以访问,派生类不能访问。
        ◆ 通过private方式继承的基类成员(非private成员),只有派生类的成员函
          数可以访问,外界以及派生类的派生类都不能访问。
        ◆ 通过protected方式继承的基类成员(非private成员),只有派生类以及该派
          生类的子类(非private方式产生的)可以访问,外界不能访问。
      (43)、(44)考查的是外界(P的对象和Q的对象)对派生类中继承的基类成员的访问权限。解答此题的关键在于确定基类中成员在派生类中的访问权限,尤其是类Q,它是经过两次继承得到的,Q的直接基类是P,而P又是由O派生而来的。
      先分析空(43)。首先应注意到类O中有一个私有方法F1。类的私有成员只有在本类中才能访问,因此凡是出现“可以访问F1”的选项都是错误的,这样选项A、C就可以排除了。其次,P是采用public继承方式从O派生而来,那么类O中的所有公有成员都是P的公有成员,在程序中的任何地方都可以访问一个类的公有成员。因此只有选项 B是正确的。
      空(44)可以在空(43)的基础上进行。通过继承,F1、F2、F3都成为类Q的成
    员。由空(43)已经得到:F1不可以被外界访问,因此凡是出现“可以访问P1”的选项都是错误的,这样A就被排除了。由于Q采用的是pfivate继承方式,P中的成员都成为Q的private成员,即F2、F3都是Q的private成员。私有成员只有本类可以访问,所以Q的对象不能访问F2和F3,只有Q的成员才能访问它们。因此选项C是正确答案。

  • 第14题:

    已知一个类A,类A有三个公有成员:void f1(int),void f2(int)和int a;定义指向类A成员函数的指针是( )。

    A.A*p;

    B.int A::*Pc=&A.a;

    C.void(A::*pA) ();

    D.void(A::*p


    正确答案:C
    解析:A定义了一个类的对象指针;B定义一个类A数据成员指针;C定义了一个类A的成员函数指针;D定义一个类A的对象指针数组。

  • 第15题:

    已知3个类R、S和T,类R中定义了一个私有方法F1和一个公有方法F2;类S中定义了一个公有方法F3,类S为类R的派生类,类T为类S的派生类,它们的继承方式如下所示:

    class S: public R {…};

    class T: private S {…};

    在关于类S的描述中正确的是(5);在关于类T的描述中正确的是(6)。

    A.类S的对象可以访问F1,但不能访问F2

    B.类S的对象可以访问F2,但不能访问F1

    C.类S的对象既可以访问F1,也可以访问F2

    D.类S的对象既不能访问F1,也不能访问F2


    正确答案:B

  • 第16题:

    ●如果在一个课程注册系统中,定义了类CourseSchedule和类Course,并且在类CourseSchedule中定义了方法Add(c:Course)和方法Remove (c:Course),那么类CourseSchedule和类Course之间的是一种(18)关系。

    (18)

    A.包含

    B.实现

    C.依赖

    D.泛化


    正确答案:C

  • 第17题:

    先定义一个类A(该类有成员变量x,成员方法f1( )对x赋初值),再定义类A的子类B(要求B新增成员变量y,新增成员方法f2(? )对y赋初值)。


    答案:class A{private int x;public A(int x, ){this.x = x;? }public int f1x() {return x; }}class B extendsA{private int y;public B(int z){this.y = y;? }public int f2y() {return y; }}

  • 第18题:

    采用面向对象程序设计语言C++/Java进行系统实现时,定义类S及其子类D。若类S中已经定义了一个虚方法int fun(int a,int b) ,则方法(44)不能同时在类S中。D中定义方法int fun(int a,int b) ,这一现象称为(45)。

    A.覆盖/重置
    B.封装
    C.重载/过载
    D.多态

    答案:A
    解析:

  • 第19题:

    下述排版代码中,符合编码规范的是()。

    • A、if(i>j)doStart();
    • B、Objecto=newObject();Objectb=null;
    • C、类定义{类的公有属性定义类的保护属性定义类的私有属性定义类的公有方法定义类的保护方法定义类的私有方法定义}
    • D、typeCounter*=2;

    正确答案:C,D

  • 第20题:

    已知类B是由类A继承而来,类A中有一个为M的非虚方法,现在希望在类B中也定义一个名为M的方法,若希望编译时不出现警告信息,则在类B中声明该方法时,应使用()方法。

    • A、static
    • B、new
    • C、override
    • D、virtual

    正确答案:B

  • 第21题:

    下列关于类方法的声明正确的是()

    • A、方法定义了类所许可的行为
    • B、从一个类所创建的所有对象可以使用同一组属性和方法
    • C、每个方法应该有一个参数
    • D、如果在同一个类中定义了类似的操作,则他们的行为应该是类似的

    正确答案:A,B,D

  • 第22题:

    多选题
    下述排版代码中,符合编码规范的是()。
    A

    if(i>j)doStart();

    B

    Objecto=newObject();Objectb=null;

    C

    类定义{类的公有属性定义类的保护属性定义类的私有属性定义类的公有方法定义类的保护方法定义类的私有方法定义}

    D

    typeCounter*=2;


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

  • 第23题:

    多选题
    在实现单例模式时,大概的思路是()
    A

    在类中定义一个静态的类自己数据类型的引用

    B

    在类中定义一个公有的类自己数据类型的引用

    C

    定义一个静态的获得该实例的方法

    D

    定义一个非静态的获得该实例的方法


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