• 密封类与密封方法


            密封类就是将一个类封闭起来,断其子孙的一种方式。书面点说,就是从所修饰的类派生出其他类,所以一个密封类是没有也不能继承的类,因此sealed关键字和abstract关键字不能同时使用。

           密封方法则不是为了防止继承而是防止重写,而且它是为了重写基类的虚方法并提供具体的实现,同时防止其后继类(派生类)再次重写该虚方法因此在密封方法中sealed关键字总是和override关键字同时使用。

    这些都很简单但是代码总结起来还是不够直观,必须实际感受下:

     1 using System;
    2
    3 namespace SealClassTest
    4 {
    5 public sealed class SealClass
    6 {
    7 public static void F()
    8 {
    9 Console.WriteLine("SealClass.F()");
    10 }
    11 }
    12 /* public class TestSeal : SealClass
    13 * { }
    14 * error,The compiler's IntelliSense
    15 * will not prompt "SealClass",Here just to test */
    16 class A
    17 {
    18 public virtual void F()
    19 {
    20 Console.WriteLine("A.F()");
    21 }
    22 public virtual void G()
    23 {
    24 Console.WriteLine("A.G()");
    25 }
    26 }
    27 class B : A
    28 {
    29 sealed public override void F()
    30 {
    31 Console.WriteLine("B.F()");
    32 }
    33 public override void G()
    34 {
    35 Console.WriteLine("B.G()");
    36 }
    37 }
    38 class C : B
    39 {
    40 public override void G()
    41 {
    42 Console.WriteLine("C.G()");
    43 }
    44 /*
    45 * error :
    46 public override void F()
    47 {
    48 base.F();
    49 }*/
    50 }
    51
    52 class Test
    53 {
    54 public static void Main()
    55 {
    56 C c = new C();
    57 B b = c;
    58 A a=new A();
    59 b.F();
    60 a.F();
    61 c.F();
    62 Console.ReadKey();
    63 }
    64 }
    65 }

     
  • 相关阅读:
    0125——时钟
    0125——动画2
    0124——动画1
    0124——KVC KVO模式
    0123——单例模式
    0122——简单小动画+微博简单模拟2
    0122——UITabBarController
    0119——UIImageView的一些属性 和 简单动画实现
    12月28号 ios设计简单操作
    12月25号 Category类别
  • 原文地址:https://www.cnblogs.com/rohelm/p/2384114.html
Copyright © 2020-2023  润新知