zoukankan      html  css  js  c++  java
  • 静态类

    只包含 静态方法和属性,用static标识

    静态类不能创建实例,不能被继承

    主要用于 基础类库 和 静态类扩展方法

     静态扩展方法:

    扩展方法所属类是static类,方法是static方法,方法第一参是this+类名。

     class Program
        {
            static void Main(string[] args)
            {
               
                Pet[] pets = new Pet[] { new Dog("DD"), new Cat("CC") };
               
                for (int i = 0; i < pets.Length; i++)
                {
                    pets[i].Speak();
                }
    
                
                Dog D = new Dog("DD1");
                Dog.ShowNum();
                D.Lost();//
                Dog.ShowNum();
                Dog d0 = (Dog)pets[0];
                d0.Lost();
                Dog.ShowNum();
    
                D.FeedDog();
    
            }
    
        }
        abstract public class Pet
        {
            protected string Name;
            public Pet(string name)
            {
                Name = name;
            }
            public void PrintName()
            {
                Console.WriteLine("Print" + Name);
            }
    
            abstract public void Speak();
        }
        public class Dog : Pet
        {
            static int Num;
            static Dog()
            {
                Num = 0;
            }
            public Dog(string name) : base(name)/
            {
                ++Num;
            }
            new public void PrintName()
            {
                Console.WriteLine("子打印" + base.Name);
            }
            //override public void Speak()
            sealed override public void Speak()
            {
                Console.WriteLine("子说" + Name);
            }
            static public void ShowNum()
            {
                Console.WriteLine("Dog's number = " + Num);
            }
            public void Lost()
            {
                --Num;
                Console.WriteLine(Name + " is Lost!");
            }
        }
        static class PetGuide//额外创建的静态类
        {
            static public void FeedDog(this Dog dog)//静态类里的静态方法,第一参为this+类名,这是静态扩展方法
                                                    //Dog类因为某种原因,不可修改,不可override等,但又需要扩展时使用的方法。
                                                    //这样Dog就被额外扩展了这个功能,Dog类本身不包含这个方法,但使用起来就像Dog里直接有这个方法一样
            {
                Console.WriteLine("Play a vedio about how to feed a dog");
            }
        }
      

    我的理解就是这样什的:

     class Program
        {
            static void Main(string[] args)
            {
               
                传人 虚竹 = new 传人();
                虚竹.乾坤大挪移(); //就这样莫名其妙可以直接使出来这招了,好像自己原本就有这种功力一样
    
            }
    
        }
     
        public void 传人()
        {//在大牛面前算是几乎什么也不会
        }
        static class 活死人要传授的一系列功法//虚竹自己不想得此功法,但是活死人需要传功法
        {
            static public void 乾坤大挪移(this 传人 虚竹)//将这个功法传给一个叫虚竹的传人,此时第一参就记录这个信息
            {
    
            }
        }
  • 相关阅读:
    需要做一个 Android客户端 访问 服务器数据库 的 Demo
    如何使用Device File Explorer 从计算机拷贝文件到模拟器/手机?
    Android Studio 3.0 正式版 初体验
    Android Studio 原生模拟器, DDMS data打不开,adb shell 修改权限遇到:/system/bin/sh: su: not found
    2017.9.6 实验课:安装环境遇到的问题总结
    IntelliJ IDEA
    移动终端
    关于编程~
    2018面向对象程序设计(Java)第18周学习指导及要求
    2018面向对象程序设计(Java)第17周学习指导及要求
  • 原文地址:https://www.cnblogs.com/cicily/p/10930080.html
Copyright © 2011-2022 走看看