2023-10-16
自我提升
0

11.在C#的语法中,( a )关键字可以实现在派生类中对基类的虚函数进行重载(选一项)

  • a. override
  • b. new
  • c. static
  • d. virtual

相关信息

子类对父类进行重写

12.请问,此程序输出结果是( C )

c#
abstract class BaseClass{ //抽象类父类 public virtual void MethodA(){Console.WriteLine("BaseClass");} //方法A 输出BaseClass public virtual void MethodB(){} //方法B 什么都不干 } class Class1: BaseClass{ //子类1 public void MethodA(){Console.WriteLine("Class1");} //方法A 隐藏方法输出 Class1 public override void MethodB(){} //方法B 重写父类方法B } class Class2: Class1{ //子类2 new public void MethodB(){} //把子类1中的B方法隐藏 } class MainClass{ public static void Main(string[] args){Class2 o = new Class2();o.MethodA(); } }
  • A. BaseClass
  • B. BassClass Class1
  • C. Class1
  • D. Class1 BassClass

13.请问,此程序输出结果是( a )

c#
public abstract class A { public A() { Console.WriteLine('A'); } //构造函数输出A public virtual void Fun() { Console.WriteLine("A.Fun()"); } } //虚方法输出A.Fun() public class B: A { public B() { Console.WriteLine('B'); } //B类构造函数输出B public new void Fun() { Console.WriteLine("B.Fun()"); } //隐藏方法 把B.Fun() 隐藏 public static void Main() { A a = new B();a.Fun(); } }
  • A. A B A.Fun()
  • B. A B B.Fun()
  • C. B A A.Fun()
  • D. B A B.Fun()

相关信息

  • B对象,A声明,调用啥 则输出啥
  • 构造 newB 时,构造函数被调用,先调用父类再调用子类

14.以下叙述正确的是( bc ):

  • A. 接口中可以有虚方法。
  • B. 一个类可以实现多个接口。
  • C. 接口不能被实例化。
  • D. 接口中可以包含已实现的方法。

15.以下关于C#代码的说法正确的是( a )。(选择一项)

c#
Public abstract class Animal //抽象类 Animal { Public abstract void Eat(); //抽象方法 Public void Sleep() { } }
  • a. 该段代码正确
  • b. 代码错误,因为类中存在非抽象方法
  • c. 代码错误,因为类中的方法没有实现
  • d. 通过代码“Animal an = new Animal();”可以创建一个Animal对象

16.在c#中,关于继承和接口,以下说法正确的是( b ) (单选)

  • a.c#允许许多接口实现,也允许多重继承
  • b.c#允许多接口实现,但不允许多重继承
  • c.c#不允许多接口实现,但允许多重继承
  • d.c#不允许多重接口实现,也不允许多重继承
  1. 在C#中,已知下列代码的运行结果是“老虎吃动物”,请问在空白处1和空白处2分别应该填写的代码是( c )
c#
Public class Animal //父类 { Public 空白处1 void Eat() { Consone.WriteLine(“我要吃”); } } Public class Tiger:Animal //子类继承父类 { Public 空白处2 void Eat() { Consone.WriteLine(“老虎吃动物”); } Public calssTest { Static void Main() { Animal an = new Tiger(); //父类声明 an.Eat; //调用重写方法 } } }
  • a. Virtual , new
  • b. override , virtual
  • c. virtual , override
  • d. new , virtual
  1. 在C#中,下列关于抽象类和接口的说法,正确的是( b )(选择一项)
  • a. 在抽象类中,所以的方法都是抽象方法
  • b. 继承自抽象类的子类必须实现起父类(抽象类)中的所以抽象方法
  • c. 在接口中,可以有方法实现,在抽象类中不能有方法实现
  • d. 一个类可以从多个接口继承,也可以从多个抽象类继承
  1. 关于以下C#代码的说法正确的是( b )
c#
Public abstract class Animal{ //抽象类父类 Animal Public abstract void Eat(); //抽象方法 } Public class Tiger:Animal{ //子类1 继承父类 Public override void Eat(){ //重写方法 Console.WriteLine(“老虎吃动物”); } } Public class Tigress:Tiger{ //子类2 继承父类 Static void Main(){ Tigress tiger=new Tigress();//子类构造 tiger.Eat(); } }
  • a. 代码正确,但没有输出
  • b. 代码正确,并且输出为”老虎吃动物”;
  • c. 代码错误,因为Tigress类没有实现抽象基类Animal中的抽象方法
  • d. 代码错误,因为抽象基类Animal的Eat方法没有实现

相关信息

子类构造函数被调用,都为调用重写后的方法

  1. 在c#中 某程序员定义了一个IDataBase接口,以及实现该接口的类CDataBase ,下列关于该段代码说法正确的是( d )(选择一项)
c#
public interface IDataBase //接口 { void OpenTable(string tableName); //打开 void UpdataTable(string tableName); //更新 } public class CDataBase:IDataBase //子类继承接口 { public void OpenTable(string tableName) //打开方法 { Console.WriteLine("打开数据表"); } public void UpdataTable(string tableName) //更新方法 { Console.WriteLine("更新数据表"); } static void Main() { CDataBase db = new CDataBase(); //声明子对象 然后子类构造 db.OpenTable("Customers"); } }
  • a.该段代码错误,因为在定义接口时,接口中的方法没有提供实现
  • b.该段代码错误,因为接口中声明的方法不是公有的,应此在CDataBase类中不能访问接口中的方法
  • c.该段代码正确,同时由于客户没有调用UpdataTable方法,可以把CDataTable类中的UpdataTable去掉,代码仍然正确
  • d.该段代码正确,但是如果在IDataBase 接口中声明一个方法void Execute(string sql); 则必须在CDataBase中实现该方法

相关信息

a.接口中方法不需要提供实现
b.默认为public
c.即使没有调用,也要实现方法

21.c#中 下列代码运行结果是( a )(选择一项)

c#
public class Student{ //父类 public virtual void Exam(){ //虚方法 Console.WriteLine("学生都要考试"); } } public class Undergraduate:Student{ //子类继承父类 public new void Exam(){ //隐藏父类 base.Exam(); //调用父类里的方法 Console.WriteLine("大学生有选择考试科目的权利"); } } public class Test{ static void Main() { Student stu = new Undergraduate(); //父类声明对象,子类构造 stu.Exam(); } }
  • a.学生都要考试
  • b.大学生有选择考试科目的权利
  • c.大学生都要考试 大学生有选择考试科目的权利
  • d.学生都要考试 学生都要考试

相关信息

隐藏方法只有在子类声明才会调用隐藏方法

22.c#中 下列代码的运行结果是( a )(选择一项)

c#
struct Student{ //声明学生结构体 public int age; public string name; public Student(int age,string name){ //构造函数(年龄、名字) this.age=age; this.name=name; } } public class Test{ static void Mian(){ Student stu1= new Student(18,"小方"); //创建2名学生 Student stu2= new Student(24,"小刚"); stu2=stu1;//在c#中 结构体是值类型,在这里赋值只会赋值其中变量的值 stu1.age=30; stu1.name="小燕"; Console.WriteLine(stu2.age); Console.WriteLine(st2.name); } }
  • a.18 小方
  • b.18 小燕
  • c.30 小燕
  • d.30 小方

image.png