C#基础概念之密封类,属性访问器,接口

本系列文章导航

静态成员和非静态成员的区别?

const 和 static readonly 区别?

extern 是什么意思?

abstract 是什么意思?

internal 修饰符起什么作用?

sealed 修饰符是干什么的?

override 和 overload 的区别?

什么是索引指示器?

new 修饰符是起什么作用?

this 关键字的含义?

可以使用抽象函数重写基类中的虚函数吗?

C#基础概念之密封类,属性访问器,接口

类和结构的区别?

C#基础概念之抽象类,接口,接口多继承

别名指示符是什么?

如何手工释放资源?

C#基础概念之P/Invoke,StringBuilder 和 String

explicit 和 implicit 的含义?

params 有什么用?

什么是反射?

12.密封类可以有虚函数吗?
答:


可以,基类中的虚函数将隐式的转化为非虚函数,但密封类本身不能再增加新的虚函数

示例:


class BaseClass
{
public virtual void F()
{
Console.WriteLine("BaseClass.F");
}
}
sealed class DeriveClass : BaseClass
{
//基类中的虚函数F被隐式的转化为非虚函数

//密封类中不能再声明新的虚函数G
//public virtual void G()
//{
// Console.WriteLine("DeriveClass.G");
//}
}

13.什么是属性访问器?
答:


属性访问器(Property Accessor),包括 get 访问器和 set 访问器分别用于字段的读写操作。

其设计目的主要是为了实现面向对象(OO)中的封装思想。根据该思想,字段最好设为private,一个精巧的类最好不要直接把字段设为公有提供给客户调用端直接访问,另外要注意属性本身并不一定和字段相联系。

14.abstract 可以和 virtual 一起使用吗?可以和 override 一起使用吗?
答:


abstract 修饰符不可以和 static、virtual 修饰符一起使用
abstract 修饰符可以和 override 一起使用,参见第11点

示例:

using System;
using System.Collections.Generic;
using System.Text;

namespace Example14
{
class BaseClass
{
publicvirtualvoid F()
{
Console.WriteLine("BaseClass.F");
}
}
abstract class DeriveClass1 : BaseClass
{
//在这里, abstract是可以和override一起使用的
publicabstractoverride void F();
}
class Program
{
staticvoid Main(string[] args)
{
}
}
}

15.接口可以包含哪些成员?
答:


接口可以包含属性、方法、索引指示器和事件,但不能包含常量、域、操作符、构造函数和析构函数,而且也不能包含任何静态成员

你可能感兴趣的:(软卓笔记)