zoukankan      html  css  js  c++  java
  • 抽象类 new修饰符 override virtual

     1 using System;
     2 using System.Collections.Generic;
     3 using System.Text;
     4 
     5 namespace TestNewCreatNewMethod
     6 {
     7     class Program
     8     {
     9         static void Main(string[] args)
    10         {
    11             test1 t1=new test1();
    12             test2 t2=new test2();
    13             test3 t3=new test3();
    14             t1.prinf();
    15             t1.printf();
    16 
    17             t2.prinf();
    18             t2.printf();
    19 
    20             t3.prinf();
    21             t3.printf();
    22             Console.ReadKey();
    23         }
    24     }
    25 
    26     public abstract class book //抽象类中可以没有抽象方法,但抽象类不能被实例化,只能被继承,另外不能用sealed关键字,密封类不能被继承
    27     {
    28         public virtual void prinf()//虚方法用virtual关键字修饰
    29         {
    30             Console.WriteLine("this virtual method");
    31         } 
    32         public void printf()
    33         {
    34             Console.WriteLine("this real method");
    35         }
    36     }
    37 
    38     public abstract class book1
    39     {
    40         public virtual void prinf()
    41         {
    42             Console.WriteLine("this virtual method");
    43         } 
    44         public abstract void printf();
    45     }
    46 
    47     public class test1:book
    48     {
    49         public new void prinf()//类中的virtual方法可以由override实现也可以用new关键字隐藏基类中的虚方法
    50         {
    51             base.prinf();
    52             Console.WriteLine("book new method prinf");
    53         }
    54         public new void printf()//类中的实方法可以由new关键字隐藏基类中的虚方法
    55         {
    56             Console.WriteLine("book new method printf");
    57         }
    58     }
    59 
    60     public class test2:book1
    61     {
    62         public override void prinf()//抽象类中的virtual方法可以由override实现也可以用new关键字隐藏基类中的虚方法
    63         {
    64             Console.WriteLine("book1 override method prinf");
    65             base.prinf();
    66         }
    67         public override void printf()//抽象类中的抽象方法只能由override实现
    68         {
    69             Console.WriteLine("book1 override method printf");
    70         }
    71     }
    72 
    73     public class test3:book1
    74     {
    75         public override void printf()   //抽象类中的抽象方法只能由override实现
    76         {
    77             Console.WriteLine("book1  abstruct method printf");
    78         }
    79     }
    80 }
    81 
  • 相关阅读:
    深入理解 ProtoBuf 原理与工程实践(概述)
    高性能缓存 Caffeine 原理及实战
    Java 多线程上下文传递在复杂场景下的实践
    SpringBoot 2.0 中 HikariCP 数据库连接池原理解析
    MySQL 5.6.35 索引优化导致的死锁案例解析
    gitlab安装升级(大版本跨度9.4.5----13.2.1)
    mysql 查看表的索引
    python安装mysql库 ,MySQL-python
    Alpine包管理工具apk使用介绍
    docker容器添加hosts
  • 原文地址:https://www.cnblogs.com/xFight/p/1886322.html
Copyright © 2011-2022 走看看