面向对象编程 - 练习题
C#面向对象编程-练习题
1.C#中的方法重写使用关键字(a)。
- override
- overload
- static
- Inherit
2.以下的C#代码,试图用来定义一个接口:
public interface IFile{
int A;
int delFile() {
A = 3;
}
void disFile();
}
关于以上的代码,以下描述错误的是(d)。(选择一项)
- 以上的代码中存在的错误包括:不能在接口中定义变量,所以int A代码行将出现错误
- 以上的代码中存在的错误包括:接口方法delFile是不允许实现的,所以不能编写具体的实现函数
- 代码void disFile();定义无错误,接口可以没有返回值
- 代码void disFile();应该编写为void disFile(){};
3.在C#中,接口与抽象基类的区别在于(a)。
- 抽象基类可以包含非抽象方法,而接口只能包含抽象方法
- 抽象基类可以被实例化,而接口不能被实例化
- 抽象基类不能被实例化,而接口可以被实例化
- 抽象基类就是接口,它们之间无差别
4.在开发某图书馆的图书信息管理系统的过程中,开始为教材类图书建立一个TextBook类;现在又增加了杂志类图书,于是需要改变设计,则下面最好的设计应该是(c)。
- 建立一个新的杂志类Journal。
- 建立一个新的杂志类Journal,并继承TextBoook类。
- 建立一个基类Book和一个新的杂志类Journal,并让Journal类和TextBoook类都继承于Book类。
- 不建立任何类,把杂志图书的某些特殊属性加到TextBoook类中。
5.可以使用(a)关键字重写方法。
- Override
- New
6.以下叙述正确的是:(b,c)
A.接口中可以有虚方法。 B.一个类可以实现多个接口。
C.接口不能被实例化。 D.接口中可以包含已实现的方法。
7.下列代码输出为(d ):
class Father{
public void F() }
public virtual void G() { Console.WriteLine("A.G"); }
}
class Son: Father{
new public void F() { Console.WriteLine("B.F"); }
public override void G() { Console.WriteLine("B.G"); }
}
class override_new{
static void Main() {
Son b = new Son();
Father a = b;
a.F();
b.F();
a.G();
b.G();
}
}
- A.F B.F A.G B.G
- A.F B.F B.G B.G
- A.F A.F B.G B.G
- B.F B.F B.G B.G
8.写出程序的输出结果:
public class A
{
public virtual void Fun1(int i)
{
Console.WriteLine(i);
}
public void Fun2(A a)
{
a.Fun1(1);
Fun1(5);
}
}
public class B:A {
public override void Fun1(int i)
{
base.Fun1(i+1);
}
public static void Main() {
B b=new B();
A a=new A();
a.Fun2(b);
b.Fun2(a);
}
}
答案:2516
9.在C#中,允许多接口继承,从多个接口时,使用":"后跟继承的接口的名字,多个接口名称之间使用(c)符号进行分割。(选择一项)
a)".'
b)"->"
c)","
d)"::"
10.阅读以下的C#代码:
class A
{
public virtual void printStr(string str)
{
Console.WriteLine(str);
}
}
class B:A
{
public override void printStr(string str)
{
str=str+" 重写的方法";
Console.WriteLine(str);
}
}
class DefaultInitializerApp
{
public static void Main()
{
B b=new B();
A a=b;
a.printStr("打印");
b.printStr("打印");
Console.ReadLine();
}
}
运行程序后将在控制台窗口打印( a )。(选择一项)
- 打印 重写的方法 打印 重写的方法
- 打印 打印 重写的方法
- 打印
- 程序有误,不能运行
11.在C#的语法中,(a)关键字可以实现在派生类中对基类的虚函数进行重载(选一项)
- override
- new
- static
- virtual
12.请问,此程序输出结果是( c )
abstract class BaseClass{
public virtual void MethodA(){Console.WriteLine("BaseClass");}
public virtual void MethodB(){}
}
class Class1: BaseClass{
public void MethodA(){Console.WriteLine("Class1");}
public override void MethodB(){}
}
class Class2: Class1{
new public void MethodB(){}
}
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 )
public abstract class A { public A() { Console.WriteLine('A'); }
public virtual void Fun() { Console.WriteLine("A.Fun()"); } }
public class B: A { public B() { Console.WriteLine('B'); }
public new void Fun() { Console.WriteLine("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()
14.以下叙述正确的是( bc ):
A. 接口中可以有虚方法。
B. 一个类可以实现多个接口。
C. 接口不能被实例化。
D. 接口中可以包含已实现的方法。
15.以下关于C#代码的说法正确的是(a)。(选择一项)
Public abstract Animal
{
Public abstract void Eat();
Public void Sleep()
{
}
}
- 该段代码正确
- 代码错误,因为类中存在非抽象方法
- 代码错误,因为类中的方法没有实现
- 通过代码"Animal an = new Animal();"可以创建一个Animal对象
16.在c#中,关于继承和接口,以下说法正确的是( b ) (单选)
a. c#允许许多接口实现,也允许多重继承
b.c#允许多接口实现,但不允许多重继承
c.c#不允许多接口实现,但允许多重继承
d.c#不允许多重接口实现,也不允许多重继承
17. 在C#中,已知下列代码的运行结果是"老虎吃动物",请问在空白处1和空白处2
分别应该填写的代码是( 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;
}
}
}
- Virtual , new
- override , virtual
- virtual , override
- new , virtual
18. 在C#中,下列关于抽象类和接口的说法,正确的是)( b )(选择一项)
a) 在抽象类中,所以的方法都是抽象方法
b) 继承自抽象类的子类必须实现起父类(抽象类)中的所以抽象方法
c) 在接口中,可以有方法实现,在抽象类中不能有方法实现
d) 一个类可以从多个接口继承,也可以从多个抽象类继承
19. 关于以下C#代码的说法正确的是( b )
Public abstract class Animal{
Public abstract void Eat();
}
Public class Tiger:Animal{
Public override void Eat(){
Console.WriteLine("老虎吃动物");
}
}
Public class Tigress:Tiger{
Static void main(){
Tigress tiger=new Tigress();
Tiger.Eat();
}
}
- 代码正确,但没有输出
- 代码正确,并且输出为"老虎吃动物";
- 代码错误,因为Tigress类没有实现抽象基类Animal中的抽象方法
- 代码错误,因为抽象基类Animal的Eat方法没有实现
20. 在c#中 某程序员定义了一个IDataBase接口,以及实现该接口的类CDataBase ,下列关于该段代码说法正确的是()(选择一项)
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中实现该方法
21.c#中 下列代码运行结果是(a)(选择一项)
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#中 下列代码的运行结果是()(选择一项)
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,"小方");
Student stu2= new Student(24,"小刚");
stu2=stu1;
stu1.age=30;
stu1.name="小燕";
Console.WriteLine(stu2.age);
Console.WriteLine(st2.name);
}
}
a)18 小方
b)18 小燕
c)30 小燕
d)30 小方
23.在C#中,下列(a)关键字用于重写基类的虚拟方法。(选择一项)
a)override
b)new
c)base
d)virtual
面向对象编程 - 练习题相关推荐
- java面向对象上机题库_Java面向对象编程上机-练习题汇总
Java面向对象编程上机-练习题汇总 [练习题1]类的成员变量: 猜数字游戏:一个类A有一个成员变量v,有一个初值100.定义一个类,对A类的成员变量v进行猜.如果大了则提示大了,小了则提示小了.等于 ...
- 面向对象编程设计练习题(1)
1.面向对象三大特性,各有什么用处,说说你的理解 继承 :继承指的是类与类之间的关系,是一种什么"是"什么的关系,继承的功能之一就是用来解决代码重用问题继承是一种创建新类的方式在p ...
- java封装例题_java面向对象编程类的封装接口和基本类库练习题
面向对象编程基本知识练习 一.判断题 1.不需要定义类,就能创建对象.() 2.构造方法用于给类的 private 实例变量赋值.() 3.对象一经声明就可以立即使用.() 4.在定义变量和方法时,必 ...
- python对象编程例子-python面向对象编程练习
练习题 1.面向对象三大特性,各有什么用处,说说你的理解. 面向对象的三大特性: 1.继承:解决代码的复用性问题 2.封装:对数据属性严格控制,隔离复杂度 3.多态性:增加程序的灵活性与可扩展性 2. ...
- 【Golang第8章:面向对象编程】Go语言的结构体是什么,怎么声明;Golang方法的调用和声明;go语言面向对象实例,go语言工厂模式;golang面向对象的三大特性:继承、封装、多态
介绍 这个是在B站上看边看视频边做的笔记,这一章是Glang面向对象编程 这一章内容较多,内容有Go语言的结构体是什么,怎么声明:Golang方法的调用和声明:go语言面向对象实例,go语言工厂模式: ...
- 这些java基础编程练习题你都会了吗?
很多人在自学java的时候看一遍视频,感觉就会了,课后并没有大量的练习来巩固当前所学的知识点,今天给大家整理了一些非常具有代表意义的题. Java基础类型题 1.反转一个只有3位数的整数. 从控制台输 ...
- java零基础Ⅰ-- 6.面向对象编程(基础部分)
java零基础Ⅰ-- 面向对象编程(基础部分) 类与对象 类与对象引出 类与对象概述 快速入门 类与对象的区别和联系 对象在内存中存在形式 属性/成员变量/字段 注意事项和细节说明 如何创建对象 如何 ...
- Java面向对象编程(中级部分)
目录 IDE(集成开发环境) - IDEA IDEA 的使用技巧和经验 包 基本介绍 包的本质分析(原理) 包的命名规则和命名规范 命名规则 命名规范 常用的包 注意事项和使用细节 访问修饰符 基本介 ...
- (JAVA) 面向对象编程(中级部分)
韩顺平老师==>视频链接 文章目录: 1.IDE(集成开发环境)-IDEA 1.1IDEA 介绍 2.IDE(集成开发环境)-Eclipse 2.1Eclipse 介绍 3.IDE(集成开发环境 ...
最新文章
- 手写实现RPC框架基础功能
- arraylist内存溢出_ArrayList使用内存映射文件
- 检查MySQL主从数据一致性
- [转载] --- 让线程按顺序执行8种方法
- python(20)之读写文件
- oracle数据库报错: ORA-00257: archiver error. Connect internal only, until freed 错误的处理方法
- C#初学者们,请离代码生成器远点!!!
- 兴业太阳能:将“绿色能源”带到国外
- rk3568 android 11 更换系统签名
- 如何创建自己的本地高级URL缩短服务
- MATLAB fig文件批量转换为jpg格式
- Windows 7、8、8.1安装.NET 3.5报错问题
- 人工神经网络实验项目:论文复现
- wifi 中间人攻击_公共wifi下的中间人攻击
- Item Categories
- 抢先看,2023年前瞻版Java八股文面试题,面试应该是够用了(吊打面试官)
- php 正态分布数据描述,正态分布-统计百科- 人大经济论坛-经管百科
- Python数据可视化 Pyecharts 制作 Tab 选项卡多图控制
- 7.3 嵌入式实训学习的第一天
- 并联串联混合的电压和电流_中考物理满分之路:《电阻的串联和并联》2020年高频易错题集...
热门文章
- 下一代对话系统中的关键技术(下篇)
- 深圳内推 | 粤港澳大湾区数字经济研究院招聘NLP算法研究员(可实习)
- MindSpore感恩节重磅福利,华为Mate 40E送送送!
- 论文共读 | “阳奉阴违”的半监督学习算法 - Virtual Adversarial Training
- HDU1506 / POJ2339 Largest Rectangle in a Histogram 单调递减栈
- 西安电子科技大学第16届程序设计竞赛G题
- 四张照片合成一张怎么弄_精美!多张照片组合成一张的拼贴画,每一幅都令人惊叹...
- 【Java调试】通过SqlSessionFactory类对象获取mapper文件内的动态SQL在执行时的完整SQL及参数(2种使用方法+测试Demo及结果)
- android二级菜单ui,Android UI 之实现多级树形列表TreeView示例
- eas 在linux下安装_Linux下SVN的安装以及配置