黑马程序员技术交流社区
标题:
对象能否调用静态方法?
[打印本页]
作者:
→Naxxramas←
时间:
2014-4-12 12:21
标题:
对象能否调用静态方法?
本帖最后由 →Naxxramas← 于 2014-4-12 23:00 编辑
这里不太明白。。
作者:
诠释♂回忆
时间:
2014-4-12 19:33
静态方法只能是类才能调用吧
作者:
ò壞尛孩
时间:
2014-4-12 19:35
可以调用!静态方法的调用和非静态方法一样,只是静态方法在写的时候要注意不能出现this super这样的引用!
静态方法还可以直接用类.静态方法调用!记住一下的三句:
静态方法只能访问类的静态成员,不能访问类的非静态成员;
非静态方法可以访问类的静态成员,也可以访问类的非静态成员;
静态方法既可以用实例来调用,也可以用类名来调用。
作者:
黒■色
时间:
2014-4-12 20:04
静态方法就是直接用类来调用,不能用对象来调用静态方法
class Program
{
/// <summary>
/// 一个类中,static方法能用static对象,不能直接调非static的对象。
/// 被static修饰的不需要实例化.就是不能被new的类就是静态类。
/// </summary>
/// <param name="args"></param>
static void Main(string[] args)
{
Person Age = new Person();
Person.TotalCount = 10;
Console.WriteLine(Person.TotalCount);
DoIt();
Dog dog = new Dog();
dog.jiaohuan();
Console.ReadKey();
}
public static void DoIt()
{
Console.WriteLine("使用全局变量,{0}", Person.TotalCount);//用了全局变量
}
}
public class Person
{
public static int TotalCount;//加了static后,是全局变量,都能被访问。
public int Age;
}
public class Dog
{
public void jiaohuan()
{
Console.WriteLine("旺旺,{0}",Person.TotalCount);//没有被static修饰,但也可以使用全局变量
Program.DoIt();//调用Program类中的静态方法DoIt()
}
}
复制代码
作者:
朝花夕拾_黑马
时间:
2014-4-16 11:36
静态方法属于一个类,因为静态方法和静态成员在编译时就存在,所以是属于一个类的,所以在vs中main函数中只能类名.调用静态方法、或者实例化一个对象.静态方法或成员,
静态方法里只能调用静态方法,不能调用非静态方法,因为非静态方法属于一个实例化的一个对象,静态方法中如果调用非静态方法,可能此时并未实例化一个对象,所以不能调用,除非,将一个实例化的对象作为参数传入到静态方法中,此时静态方法中就可以间接的调用非静态方法了
非静态方法可以访问类的静态成员,也可以访问类的非静态成员,因为此时调用非静态方法时,静态方法编译后已经存在,可以调用
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2