zoukankan      html  css  js  c++  java
  • C#面向对象2 静态类、静态成员的理解

    理解:静态成员属于类所有,为各个类的实例所公用,与实例无关,需要全局共享的属性或者方法定义成静态的
    C#静态成员: 
    1、静态成员属于类所有,故用类名调用,非静态成员属于类的实例所有,用实例名调用 
    2、非静态成员有一片固定的空间,而每创建一个类的实例,都会在内存中为非静态成员新分配一块存储; 
    C#静态方法 
    1、C#静态方法属于类所有,故用类名调用 
    2、非静态方法可以访问类中的任何成员,静态方法只能访问类中的静态成员。 
       因为静态方法在类实例化前就可以使用,而类中的非静态变量必须在实例化之后才能分配内存, 
    静态方法、静态字段
    namespace _2_静态_非静态方法
    {
        class Program
        {
            static void Main(string[] args)
            {
                Person.name = "key";           //用类名调用静态字段、方法
                Person.show1("哈哈哈哈哈");
                Console.WriteLine("================");
                Person per1 = new Person();
                per1.age = 19;                 //用实例名调用非静态字段、方法
                per1.show2("呵呵呵呵呵呵呵呵");
                Console.ReadKey();
            }
        }
        class Person
        {
            public static string name;        //静态字段
            public int age;                   //非静态字段
            public static void show1(string str)          //静态方法
            {
                Console.WriteLine(str);
                Console.WriteLine(name);          //可以调用静态字段,不能调用非静态字段
            }
            public void show2(string str)           //非静态方法
            {
                Console.WriteLine(str);
                Console.WriteLine(name+"今年"+age.ToString()+"岁");
            }
        }
    }
    ==================================
    静态类
    namespace 静态类
    {
        class Program    //静态类的所有成员也都是静态的,作用就是建一个数学方法和值的数学库
        {
            static void Main(string[] args)
            {
                int val = 3;
                Console.WriteLine("{0} is odd is {1}",val,MyMath.IsOdd(val));
                Console.WriteLine("{0}*2={1}",val,MyMath.Times2(val));
            }
        }
        static public class MyMath
        {
            public static float PI = 3.14f;
            public static bool IsOdd(int x)
            {
                return x % 2 == 1;
            }
            public static int Times2(int x)
            {
                return 2*x;
            }
        }
    }
  • 相关阅读:
    Day Five
    Day Four
    JS中attr和prop区别
    layui单选框radio使用form.render() 更新渲染失效的原因
    MySql的时区(serverTimezone)问题
    com.mysql.jdbc.Driver 和 com.mysql.cj.jdbc.Driver的区别 serverTimezone设定
    idea使用maven下载jar包,出现证书校验问题问题,unable to find valid certification path to requested target
    java实体类为什么要实现Serializeable 序列化呢?
    IntelliJ IDEA 2017 提示“Unmapped Spring configuration files found.Please configure Spring facet.”解决办法
    JS三个等号"==="是什么意思
  • 原文地址:https://www.cnblogs.com/key1309/p/3151885.html
Copyright © 2011-2022 走看看