蛙蛙推荐:类中的静态成员和非静态成员(C#版)

原创 2004年07月10日 13:09:00

//蛙蛙推荐:类中的静态成员和非静态成员(C#版)
//下面我写一个例子来演示静态成员和非静态成员的区别
//类的成员要么是静态的,要么是动态的,如果将类的某个成员声明为static,则该成员是静态成员。
//类的静态成员是属于类所有,不必产生类的实例就可以访问它,就是只用类名就可以访问
//静态成员为类的所有实例所共享,无论这个类创建了多少个实例,一个静态成员在内存中只占有一块区域.
//类的非静态成员属于类的实例所有,每创建一个类的实例,都在内存中为非静态成员开辟了一块区域
//静态方法只能访问类例的静态字段,而非静态方法可以访问类例的所有字段
using System;

class Employee {
    public static decimal Salary;  // 静态字段
    public string Name;  // 非静态字段
    public static void SetSalary(decimal B) //静态方法
    {
       Salary=B;  // 正确,等价于Employee.Salary=B,注意这里不能访问Name变量的,因为它是静态方法
    }
    public void SetName(string N) //非静态方法
    {
       Name=N;   // 正确,等价于this.Name=N.
    }
}

class Sample
{
    public static void Main()
    {
       Employee.Salary=500.0m;   // 正确,静态字段可以按类名访问
       Employee.SetSalary(500.0m);  // 正确,静态方法可以按类名访问
       Employee e=new Employee();  // 建立类Employee的一个实例
       e.Name="蛙蛙王子";  // 正确,非静态字段必须通过实例访问
       e.SetName("蛙蛙王子");  // 正确,非静态方法必须通过实例访问
       // 注意,e.Name不能写成Employee.Name,即非静态成员不能按类名访问
       // Employee.Salary也不能写成e.Salary,即静态成员不能通过类的实例访问
       Console.WriteLine("员工姓名:{0}/n薪水:{1}元",
                         e.Name,Employee.Salary);
    }
}
//----------------------------------------------------
//注意一下,上面的例子只演示了类成员里的字段和方法,其实类的成员还有属性等,这里没有演示.
//把本文件保存成static.cs文件,然后在.net命令控制台下敲入csc static.cs会在当前目录下生成一个static.exe文件
//运行static.exe就会看到结果了,你可以试着改动程序让静态方法访问一下非静态字段,再用csc.exe程序编译一下,
//看看会提示什么错误,呵呵.

java学习总结(16.06.07)类的静态成员和非静态成员

java里,类的成员可分为静态成员和费静态成员(实例成员),静态成员和非静态成员,从定义上来说就是有没有static修饰符修饰的区别。有static修饰的成员就是静态成员。如 public stati...
  • qq_32099621
  • qq_32099621
  • 2016年06月07日 07:08
  • 743

Java非静态内部类为什么不能有静态成员

对于java类加载顺序我们知道,首先加载类,执行static变量初始化,接下来执行对象的创建,如果我们要执行代码中的变量i初始化,那么必须先执行加载OuterClass,再加载Innerclass,最...
  • caiwencongwyj
  • caiwencongwyj
  • 2015年05月14日 00:18
  • 1489

静态成员(方法)与非静态成员(方法)的区别

原文地址:http://developer.51cto.com/art/200908/147736.htm C#的类中可以包含两种方法:C#静态方法与非静态方法。那么他们的定义有什么不同呢?他们...
  • cz_2012
  • cz_2012
  • 2013年03月17日 23:06
  • 835

深入理解C# 静态类与非静态类、静态成员的区别

深入理解C# 静态类与非静态类、静态成员的区别 静态类 静态类与非静态类的重要区别在于静态类不能实例化,也就是说,不能使用 new 关键字创建静态类类型的变量。在声明一个类时使用stati...
  • jfkidear
  • jfkidear
  • 2014年01月07日 18:06
  • 17263

C++ 静态成员函数调用非静态成员函数方法

#include #include class Class; typedef struct { Class *pClass; int x; int y; }ParaNode; clas...
  • vanquishedzxl
  • vanquishedzxl
  • 2015年06月14日 17:44
  • 2311

静态成员函数和非静态成员函数的区别?

静态成员函数和非静态成员函数的区别? 一个静态成员函数不与任何对象相联系,故不能对非静态成员进行默认访问。 它们的根本区别在于静态成员函数没有this指针,而非静态成员函数有一个指向当前对象的...
  • lejun2011
  • lejun2011
  • 2013年09月18日 10:10
  • 6985

C#—静态成员和实例成员

在C#中,类中的数据成员分为静态成员和实例成员,那么它们是什么,之间又有什么关系呢?我们来看一下。 静态成员(static member)又叫类成员,指的是在成员类型或返回值类型前用static关键字...
  • fightfaith
  • fightfaith
  • 2015年09月11日 10:09
  • 2224

java 中的 成员变量、局部变量、静态变量、类变量、非静态变量、实例变量、向前引用、非法向前引用、静态代码块、非静态代码块 执行时机

前言:这属于 java 的基础知识,你可以不了解,也可以不拿它当一回事,代码也一样能敲的顺畅;这是很久之前,我从 C++ 转 java 刚入门那会的看法,那会我坚持自己的理念:     重实践,讲运用...
  • u011514810
  • u011514810
  • 2016年08月29日 11:23
  • 663

java非静态内部类为何不能有静态的成员?

1,博客---记录自己的点滴成长 2,最近接触到关键字这一块,遇到一比较棘手的问题---java非静态内部类为何不能有静态(static)的成员? 3,首先解释几个概念:       1)内部类...
  • zhangcbhui
  • zhangcbhui
  • 2014年12月15日 13:53
  • 1497

非静态成员引用必须与静态成员相对

文章转载自:http://blog.csdn.net/shenqi67/article/details/7533094 Instance成员和static成员(p318) 实例变量/函...
  • u011499425
  • u011499425
  • 2016年09月30日 17:20
  • 1412
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:蛙蛙推荐:类中的静态成员和非静态成员(C#版)
举报原因:
原因补充:

(最多只允许输入30个字)