Skip to content

What is Static member, Instance member and Instantiate? #2

@mjft

Description

@mjft

https://blog.csdn.net/qq_30725967/article/details/90210751?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522161460162516780261916148%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=161460162516780261916148&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2allfirst_rank_v2~rank_v29-2-90210751.pc_search_result_hbase_insert&utm_term=c%23+%E9%9D%99%E6%80%81%E6%88%90%E5%91%98%E5%92%8C%E5%AE%9E%E4%BE%8B%E6%88%90%E5%91%98
CSDN:C# 静态成员和实例成员

什么是静态成员、实例成员和实例化?

静态成员和实例成员的区别:
表面看就是有没有被static修饰,其次是在内存分配上,类加载时,静态成员只分配一次,有且只有一份存储空间。而对于实例成员,每产生一个实例都要重新分配一个存储空间。
例子:

public class Demo//类Demo
{
    static int count=0;  //定义静态数据count
    int number=0;        //定义实例数据number
    public Demo()
    {
	number =number+ 1;
        count = count + 1;        
    }
    public void show()//方法show()
    {
        Console.WriteLine("number={0} : count={1}", number, count);
    }
}
class Test//主函数
{
    public static void Main()
    {
        Demo a = new Demo();//实例成员实例化
        a.show();
        Console.WriteLine("***************");
        Demo b = new Demo();
        b.show();
        Console.WriteLine("***************");
        Demo c = new Demo();
        c.show();
    }
}

输出结果:

number=1 : count=1
********************
number=1 : count=2
********************
number=1 : count=3

特点之静态成员:
  1)静态成员(包括静态数据和静态方法)必须由类名调用,不能使用对象调用(静态数据可以由实例方法调用)。
  2)静态数据属于类的级别,当类加载时,一个静态数据在内存只分配一个存储空间,无论new出多少个实例,它也只是有那一个空间。
  3)静态方法只能调用静态数据,不能调用对象。

特点之实例成员:
  1)实例成员(包括实例数据和实例方法)必须通过对象来调用,不能使用类名调用。
  2)类的实例数据属于类的实例级别,每新创建一个对象,都会在内存中为实例成员开辟一块新的存储空间。
  3)实例方法可以调用实例数据和静态数据。

什么是实例化?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions