惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

N
Netflix TechBlog - Medium
I
InfoQ
Engineering at Meta
Engineering at Meta
Jina AI
Jina AI
Recent Announcements
Recent Announcements
T
The Blog of Author Tim Ferriss
P
Proofpoint News Feed
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
D
Docker
Microsoft Security Blog
Microsoft Security Blog
宝玉的分享
宝玉的分享
Last Week in AI
Last Week in AI
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
GbyAI
GbyAI
博客园 - Franky
博客园 - 聂微东
Microsoft Azure Blog
Microsoft Azure Blog
博客园 - 叶小钗
酷 壳 – CoolShell
酷 壳 – CoolShell
B
Blog RSS Feed
WordPress大学
WordPress大学
MyScale Blog
MyScale Blog
月光博客
月光博客
罗磊的独立博客

博客园 - simply-zhao

Java 类加载基本原理[转] 浅谈Java内部类的四个应用场景[转--相当不错的文章] Java 局部类/匿名类[转] Java 静态内部类/内部类 Java Serializable Interface [转] Java Immutable Class[ From ] Java Clone机制[转] java clone机制 ANT十五大最佳实践【转】 Ant基础 System.TypeInitializationException C# Foundation---keyword: new C# Foundation---indexer C# Foundation---keyword: base & this C# Foundation Series C# Foundation---keyword: abstract & virtual & new & override C# Foundation---keyword: const & readonly & static readonly C# Foundation---keyword extern & P/Invoke [OS Homework] C# Foundation---keyword:static & static constructor
C# Foundation---keyword: sealed
simply-zhao · 2008-01-20 · via 博客园 - simply-zhao

 1using System;
 2using System.Collections.Generic;
 3using System.Text;
 4
 5namespace CSharpFoundationStudy
 6{
 7    /*
 8     * From: 
 9     * 关键字 internal
10     * internal 修饰符可以用于类型或者成员 使用该修饰符的类型或成员可以在同一个程序集内被访问
11     * 如果为 internal 成员加上了 protected 修饰符,这时的访问级别为 internal 或 protected,表示“同一个程序集中的所有类,以及所有程序集中的子类都可以访问”
12     *
13     * override 与 overload
14     * override 是表示重写,用于继承类对于基类中虚方法或者抽象方法的实现
15     * overload 是表示重载,用于同一个类中同名方法不同参数(包括类型不同或个数不同)的实现
16     * 
17     * 关键字 sealed
18     * sealed 表示密封
19     * sealed 修饰符用于类时,表示该类不能再被继承,不能与 abstract 同时使用,因为这两个修饰符在含义上相互排斥
20     * sealed 修饰符用于方法或者属性时,表示该方法或者属性不能再被重写,必须与 override 一起使用,因为使用 sealed 修饰符的肯定是基类中相应的虚成员
21     * 
22     * 通常用于实现第三方类库时不想被客户端继承,或用于没有必要再继承的类以防止滥用继承造成层次结构体系混乱
23     */

24    public class SealedA
25    {
26        //Error: "CSharpFoundationStudy.Sealed.Output()"不是重写,所以无法将其密封
27        //public sealed void Output(){ Console.WriteLine("Sealed Function in Base Class!"); }
28
29        public virtual void F()
30        {
31            Console.WriteLine("SealedA.F");
32        }

33
34        public virtual void G()
35        {
36            Console.WriteLine("SealedA.G");
37        }

38    }

39
40    public class SealedB : SealedA
41    {
42        public sealed override void F()
43        {
44            Console.WriteLine("SealedB.F");
45        }

46
47        public override void G()
48        {
49            Console.WriteLine("SealedB.G");
50        }

51    }

52
53    public class SealedC : SealedB
54    {
55        public sealed override void G()
56        {
57            Console.WriteLine("SealedC.G");
58        }

59    }

60
61    //public class SealedTest
62    //{
63    //    public static void Main()
64    //    {
65    //        new SealedA().F();
66    //        new SealedA().G();
67    //        new SealedB().F();
68    //        new SealedB().G();
69    //        new SealedC().F();
70    //        new SealedC().G();
71    //        Console.ReadLine();
72    //    }
73    //}
74}

75