A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 邓江红 中级黑马   /  2014-4-1 14:21  /  963 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

静态方法和实例方法的异同点?

4 个回复

正序浏览
1、若一个方法声明中含有 static 修饰符,则称该方法为静态方法。若其中没有 static 修饰符时,则称该方法为实例方法。

2、静态方法不对特定实例进行操作,在静态方法中引用 this 是编译时错误。

3、实例方法对类的某个给定的实例进行操作,而且可以用 this来访问该实例。

在 E.M 形式的成员访问中引用一个方法时,如果 M 是静态方法,则 E 必须表示含有 M 的一个类型,而如果 M 是实例方法,则 E 必须表示含有 M 的类型的一个实例。
回复 使用道具 举报
静态方法修饰的对象是全局变量,谁都可以调用
而实例方法创造的对象属于实例方法

static修饰的就是静态的,不需要实例化对象
而new出来的就是实例的,需要实例化对象
回复 使用道具 举报
  1. class Program
  2.     {
  3.         /// <summary>
  4.         /// 一个类中,static方法能用static对象,不能直接调非static的对象。
  5.         /// 被static修饰的不需要实例化.就是不能被new的类就是静态类。
  6.         /// </summary>
  7.         /// <param name="args"></param>
  8.         static void Main(string[] args)
  9.         {
  10.             Person Age = new Person();
  11.             Person.TotalCount = 10;
  12.             Console.WriteLine(Person.TotalCount);
  13.             DoIt();
  14.             Console.ReadKey();
  15.         }

  16.         public static void DoIt()
  17.         {
  18.             Console.WriteLine("使用全局变量,{0}", Person.TotalCount);//用了全局变量
  19.         }      
  20.     }

  21.     public class Person
  22.     {
  23.         public static int TotalCount;//加了static后,是全局变量,都能被访问。
  24.         public int Age;
  25.     }

  26.     public class Dog
  27.     {
  28.         public void jiaohuan()
  29.         {
  30.             Console.WriteLine("旺旺,{0}",Person.TotalCount);//没有被static修饰,但也可以使用全局变量
  31.         }
  32.     }
复制代码

评分

参与人数 1技术分 +1 收起 理由
czwanglei + 1

查看全部评分

回复 使用道具 举报
本帖最后由 许庭洲 于 2014-4-1 14:28 编辑

1.使用了static修饰符的方法为静态方法;
2.反之则是非静态方法;
3.静态方法是一种特殊的成员方法,它不属于类的某一个具体的实例;
4.非静态可以访问类中的任何成员,而静态方法只能访问类中的静态成员。

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马