C#學(xué)習(xí)基礎(chǔ)概念二十五問 11-15
更新時(shí)間:2007年04月09日 00:00:00 作者:
11.可以使用抽象函數(shù)重寫基類中的虛函數(shù)嗎?
答:
可以
需使用 new 修飾符顯式聲明,表示隱藏了基類中該函數(shù)的實(shí)現(xiàn)
或增加 override 修飾符,表示抽象重寫了基類中該函數(shù)的實(shí)現(xiàn)
示例:
class BaseClass
{
public virtual void F()
{
Console.WriteLine("BaseClass.F");
}
}
abstract class DeriveClass1 : BaseClass
{
public abstract new void F();
}
//感謝watson hua(http://huazhihao.cnblogs.com/)的指點(diǎn)
//是他提醒了我還可以用這種方法抽象重寫基類的虛方法
abstract class DeriveClass2 : BaseClass
{
public abstract override void F();
}
12.密封類可以有虛函數(shù)嗎?
答:
可以,基類中的虛函數(shù)將隱式的轉(zhuǎn)化為非虛函數(shù),但密封類本身不能再增加新的虛函數(shù)
示例:
class BaseClass
{
public virtual void F()
{
Console.WriteLine("BaseClass.F");
}
}
sealed class DeriveClass : BaseClass
{
//基類中的虛函數(shù)F被隱式的轉(zhuǎn)化為非虛函數(shù)
//密封類中不能再聲明新的虛函數(shù)G
//public virtual void G()
//{
// Console.WriteLine("DeriveClass.G");
//}
}
13.什么是屬性訪問器?
答:
屬性訪問器(Property Accessor),包括 get 訪問器和 set 訪問器分別用于字段的讀寫操作
其設(shè)計(jì)目的主要是為了實(shí)現(xiàn)面向?qū)ο螅∣O)中的封裝思想。根據(jù)該思想,字段最好設(shè)為private,一個(gè)精巧的類最好不要直接把字段設(shè)為公有提供給客戶調(diào)用端直接訪問
另外要注意屬性本身并不一定和字段相聯(lián)系
14.abstract 可以和 virtual 一起使用嗎?可以和 override 一起使用嗎?
答:
abstract 修飾符不可以和 static、virtual 修飾符一起使用
abstract 修飾符可以和 override 一起使用,參見第11點(diǎn)
示例:
using System;
using System.Collections.Generic;
using System.Text;
namespace Example14
{
class BaseClass
{
public virtual void F()
{
Console.WriteLine("BaseClass.F");
}
}
abstract class DeriveClass1 : BaseClass
{
//在這里, abstract是可以和override一起使用的
public abstract override void F();
}
class Program
{
static void Main(string[] args)
{
}
}
}
15.接口可以包含哪些成員?
答:
接口可以包含屬性、方法、索引指示器和事件,但不能包含常量、域、操作符、構(gòu)造函數(shù)和析構(gòu)函數(shù),而且也不能包含任何靜態(tài)成員
答:
可以
需使用 new 修飾符顯式聲明,表示隱藏了基類中該函數(shù)的實(shí)現(xiàn)
或增加 override 修飾符,表示抽象重寫了基類中該函數(shù)的實(shí)現(xiàn)
示例:
class BaseClass
{
public virtual void F()
{
Console.WriteLine("BaseClass.F");
}
}
abstract class DeriveClass1 : BaseClass
{
public abstract new void F();
}
//感謝watson hua(http://huazhihao.cnblogs.com/)的指點(diǎn)
//是他提醒了我還可以用這種方法抽象重寫基類的虛方法
abstract class DeriveClass2 : BaseClass
{
public abstract override void F();
}
12.密封類可以有虛函數(shù)嗎?
答:
可以,基類中的虛函數(shù)將隱式的轉(zhuǎn)化為非虛函數(shù),但密封類本身不能再增加新的虛函數(shù)
示例:
class BaseClass
{
public virtual void F()
{
Console.WriteLine("BaseClass.F");
}
}
sealed class DeriveClass : BaseClass
{
//基類中的虛函數(shù)F被隱式的轉(zhuǎn)化為非虛函數(shù)
//密封類中不能再聲明新的虛函數(shù)G
//public virtual void G()
//{
// Console.WriteLine("DeriveClass.G");
//}
}
13.什么是屬性訪問器?
答:
屬性訪問器(Property Accessor),包括 get 訪問器和 set 訪問器分別用于字段的讀寫操作
其設(shè)計(jì)目的主要是為了實(shí)現(xiàn)面向?qū)ο螅∣O)中的封裝思想。根據(jù)該思想,字段最好設(shè)為private,一個(gè)精巧的類最好不要直接把字段設(shè)為公有提供給客戶調(diào)用端直接訪問
另外要注意屬性本身并不一定和字段相聯(lián)系
14.abstract 可以和 virtual 一起使用嗎?可以和 override 一起使用嗎?
答:
abstract 修飾符不可以和 static、virtual 修飾符一起使用
abstract 修飾符可以和 override 一起使用,參見第11點(diǎn)
示例:
using System;
using System.Collections.Generic;
using System.Text;
namespace Example14
{
class BaseClass
{
public virtual void F()
{
Console.WriteLine("BaseClass.F");
}
}
abstract class DeriveClass1 : BaseClass
{
//在這里, abstract是可以和override一起使用的
public abstract override void F();
}
class Program
{
static void Main(string[] args)
{
}
}
}
15.接口可以包含哪些成員?
答:
接口可以包含屬性、方法、索引指示器和事件,但不能包含常量、域、操作符、構(gòu)造函數(shù)和析構(gòu)函數(shù),而且也不能包含任何靜態(tài)成員
相關(guān)文章
WPF開發(fā)txt閱讀器實(shí)現(xiàn)目錄提取功能
這篇文章主要為大家詳細(xì)介紹了WPF開發(fā)txt閱讀器時(shí)如何實(shí)現(xiàn)目錄提取功能,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2023-06-06
基于C#實(shí)現(xiàn)PDF按頁分割文件和分頁合并
iTextSharp 是一個(gè)開源的 PDF 處理庫,用于在 C# 程序中創(chuàng)建、編輯和處理 PDF 文件,本文將使用iTextSharp實(shí)現(xiàn)C# PDF分割與合并,感興趣的可以了解下2025-03-03
C#實(shí)現(xiàn)Access通用訪問類OleDbHelper完整實(shí)例
這篇文章主要介紹了C#實(shí)現(xiàn)Access通用訪問類OleDbHelper,結(jié)合完整實(shí)例形式分析了C#針對access數(shù)據(jù)庫的連接、查詢、遍歷、分頁顯示等相關(guān)操作技巧,需要的朋友可以參考下2017-02-02
c#實(shí)現(xiàn)隱藏與顯示任務(wù)欄的方法詳解
本篇文章是對c#中任務(wù)欄隱藏與顯示的實(shí)現(xiàn)方法進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-06-06
Winform控件Picture實(shí)現(xiàn)圖片拖拽顯示效果
這篇文章主要為大家詳細(xì)介紹了Winform控件Picture實(shí)現(xiàn)圖片拖拽顯示效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-09-09

