• knowing abstract,virtual,override,new


    1. If a class has at least one member which modified by "abstract",this class is an abstract class and you have to modify this class using keyword "abstract", while the member is called "abstract member"(say,abstract method or abstract property).
    2. Actual implementation is not allowed in abstract members.
    3. An abstract class can not be instantiated.
    4. When a class inherits an abstract class, it must implement all base class's abstract members(for the abstract modifier can be used with classes, methods, properties, indexers, and events).
    1. The modifier "virtual" is just simply indicate that the method can be overrided in sub classes.Beside this,a virtual member(non-static methods,properties) is as the same as usual members. 
    1. "override" is used to override base class's virtual or abstract members.
    2. "new" is used to cover base class's same-name members,but it won't override base class's anything.

    example:

    using System;
    
    namespace DesignPattern
    {
        public class A
        {
            public virtual void Bar()
            {
                Console.WriteLine("A.Bar");
            }
    
            public void Foo()
            {
                Console.WriteLine("A.Foo");
            }
            
        }
    
        class B:A
        {
            public override void Bar()
            {
                Console.WriteLine("B.Bar");
            }
    
            public new void Foo()
            {
                Console.WriteLine("B.Foo");
            }
    
        }
    
    
    
        class Program
        {
            static void Main(string[] args)
            {
                Console.WriteLine("----A1---");
                A A1 = new A();
                A1.Bar();//"A.Bar",for it's A.Bar
                A1.Foo();//"A.Foo",for it's A.Foo
                Console.WriteLine("---A2----");
                A A2 = new B();
                A2.Bar();//"B.Bar",for it has overrided father class's Bar
                A2.Foo();//"A.Foo".in fact i don't really know why.
                Console.WriteLine("---B1----");
                B B1 = new B();
                B1.Bar();//"B.Bar"
                B1.Foo();//"B.Foo"
                
                Console.Read();
            }
        }
    }
  • 相关阅读:
    Tp控制器
    thinkphp总体设计
    视频会议管理系统操作步骤(新)
    视频会议(旧)
    HCIE实验LAB_1(1)
    HCIE实验LAB_1(2)
    HCIE实验LAB_1(3)
    HCIE实验LAB_1(4)
    HCIE实验LAB_1(5)
    HCIE实验LAB_1(6)
  • 原文地址:https://www.cnblogs.com/lwhkdash/p/3205244.html
Copyright © 2020-2023  润新知