zoukankan      html  css  js  c++  java
  • 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();
            }
        }
    }
  • 相关阅读:
    百度多图上传
    uploadify--上传文件控件
    JS获取时间
    CSS选择器
    派大星博客的美化之路
    百度地图--JS版
    css实现元素下出现横线动画
    盒模型显隐、定位与流式布局思想
    css进度条
    Build Sharepoint 2013 Farm
  • 原文地址:https://www.cnblogs.com/lwhkdash/p/3205244.html
Copyright © 2011-2022 走看看