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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© →Naxxramas← 中级黑马   /  2014-4-12 12:21  /  1654 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 →Naxxramas← 于 2014-4-12 23:00 编辑

这里不太明白。。

4 个回复

倒序浏览
静态方法只能是类才能调用吧
回复 使用道具 举报
可以调用!静态方法的调用和非静态方法一样,只是静态方法在写的时候要注意不能出现this super这样的引用!
静态方法还可以直接用类.静态方法调用!记住一下的三句:
静态方法只能访问类的静态成员,不能访问类的非静态成员;
非静态方法可以访问类的静态成员,也可以访问类的非静态成员;
静态方法既可以用实例来调用,也可以用类名来调用。
回复 使用道具 举报
静态方法就是直接用类来调用,不能用对象来调用静态方法

  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.             Dog dog = new Dog();
  15.             dog.jiaohuan();
  16.             Console.ReadKey();
  17.         }

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

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

  29.     public class Dog
  30.     {         
  31.         public void jiaohuan()
  32.         {
  33.             Console.WriteLine("旺旺,{0}",Person.TotalCount);//没有被static修饰,但也可以使用全局变量
  34.             Program.DoIt();//调用Program类中的静态方法DoIt()
  35.         }
  36.     }
复制代码
回复 使用道具 举报
静态方法属于一个类,因为静态方法和静态成员在编译时就存在,所以是属于一个类的,所以在vs中main函数中只能类名.调用静态方法、或者实例化一个对象.静态方法或成员,

静态方法里只能调用静态方法,不能调用非静态方法,因为非静态方法属于一个实例化的一个对象,静态方法中如果调用非静态方法,可能此时并未实例化一个对象,所以不能调用,除非,将一个实例化的对象作为参数传入到静态方法中,此时静态方法中就可以间接的调用非静态方法了

非静态方法可以访问类的静态成员,也可以访问类的非静态成员,因为此时调用非静态方法时,静态方法编译后已经存在,可以调用

评分

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

查看全部评分

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