03.静态和非静态的区别

静态和非静态的区别

方法,字段,属性都可以被static修饰.

(1).在非静态类中,即可有实例(非静态)成员,可以有静态成员.

静态成员和非静态成员在调用上有什么不一样呢?

(1.1)非静态成员(实例成员)必须被实例化对象之后,的对象名来调用.

对象名.实例成员名;

(1.2)静态成员必须被定义它的类的类名来调用.

类名.静态成员名;      //注意,如果要在定义静态方法的类的内部使用静态

方法,我们可以省略类名.直接写.

(1.3).静态方法可以访问静态成员,但是静态方法不可以访问非静态成员(实例成员).

实例成员可以访问非静态成员(实例成员),也可以访问静态成员.

(2)在静态类中,只能允许有静态成员,不能允许出现非静态成员(实例成员).

(2.1)不允许创建静态类的对象(实例),即静态类不允许被实例化.

为什么静态类不能被实例化呢?

因为静态类中只允许有静态成员,而静态成员必须以类名.成员名的形式去

调用,所以实例化对象毫无意义.

(3)什么时候使用静态类,什么时候使用实例类呢?

(3.1)如果我们想把自己定义的某个类当成"工具类"(比如Console类)来使用,这个时            候,我们可以考虑将这个类定义成静态类.

(3.2)静态类在整个项目中,是资源共享的.

类是不占内存的,对象是占内存的,但是,静态类也占用内存的.

内存:

在计算机中我们人为的将内存分为5块.

程序员经常使用的区域是;

静态存储区域    静态类就在静态存储区域中.

静态类,是越多越好还是越少越好呢?

因为(1).静态类占用内存资源

(2).静态类占用的内存资源只能在程序全部结束之后,才会释放内存资源.

释放资源:

GC Garbage Collection 垃圾回收器

来自为知笔记(Wiz)

时间: 2024-10-05 04:01:20

03.静态和非静态的区别的相关文章

20151024_001_C#基础知识(静态与非静态的区别,值类型和引用类型,堆和栈的区别,字符串的不可变性,命名空间)

1:我们把这些具有相同属性和相同方法的对象进行进一步的封装,抽象出来类这个概念. 类就是个模子,确定了对象应该具有的属性和方法. 对象是根据类创建出来的. 2:类:语法 [public] class 类名 { 字段; 属性; 方法; } 写好了一个类之后,我们需要创建这个类的对象,那么,我们管创建这个类的对象过程称之为类的实例化.使用关键字new 实例化类===创建类 this:表示当前这个类的对象. 类是不占内存的,而对象是占用内存的. 结构是面向过程的,类是面向对象的,之前没有面向对象的时候

静态与非静态的使用与区别

静态变量.静态方法.静态代码块.非静态变量及非静态方法的简单介绍 转载自:http://xixinfei.iteye.com/blog/1256085 静态变量 静态变量是类中的一种特殊变量,他在运行是可以说是从属于类,也就是说由该类定义生成的所有对象共用同一个静态变量,内存中只有一个版本.这对于要求在程序运行过程中,只有一个对象副本存于内存非常重要,如在实现单例模式时,为了实现只有一个类对象存于内存中,我们把内对象定义为一个静态变量:为了确保这个执行过程中,只有一个Connection对象村与

静态和非静态的区别

声明 静态类和非静态类 1.非静态类中:既可以定义静态字段.静态属性.静态方法,也可以定义非静态(实例成员)字段.非静态(实例成员)属性.非静态(实例成员)方法. 1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.Threading.Tasks; 6 7 namespace 静态和非静态的区别 8 { 9 10 /** 11 *

C# 面向对象3 静态和非静态的区别

静态和非静态的区别 1.在非静态类中,既可以有实例成员(非静态成员),也可以有静态成员. 2.在调用实例成员的时候,需要使用对象名.实例成员; 在调用静态成员的时候,需要使用类名.静态成员名; 总结:静态成员必须使用类名去调用,而实例成员使用对象名去调用. 静态函数中,只能访问静态成员,不允许访问实例成员. 实例函数中,既可以使用静态成员,也可以使用实例成员. 静态类中只允许有静态成员,不允许出现实例成员. 静态类不需要实例化对象来调用,只需要类名来调用. 使用: 1.如果你想要你的类当做一个"

C# 关于静态与非静态的那点小事

所谓静态与非静态,无非就是在声明的时候多用了一个"static". 那么静态与非静态有什么区别呢? 1.对于非静态的成员,包括方法,字段,属性.调用的时候需要用实例化的对象来调用.(new出来的.) 而对于静态成员,调用的时候则需要使用类名去调用. 这就引申出一个问题,可不可以用静态类来实例化对象呢?答案当然是否定的,因为,实例化对象的目的,就是要用实例化的对象来调用属性,方法或字段.对于静态的类来说,      是用类名来调用的,所以对于静态类来说,完全不需要实例化一个对象.也就无法

变量、方法以及静态和非静态

变量变量的种类:    1.成员变量    2.局部变量成员变量与局部变量的区别:    定义位置的区别        1.成员变量定义在方法之外,类之内.        2.局部变量定义在方法之内.    作用的区别:        1.成员变量用于描述事物的公共属性.        2.局部变量提供一个一个变量给方法内部使用.    生命周期的区别:        1.成员变量随着对象的创建而存在,对着对象的消失而消失.        2.局部变量在调用了对应的方法时执行到了创建该变量的语句

关于静态与非静态之具体总结

花费了些功夫,差点儿相同搞明确了: 大家会看到有些地方不停反复出现--那就是你要找的东西 本文參考多处,详细出处就不写了. 静态和非静态: 字段.函数成员的声明中含static修饰符时是静态成员,否则是非静态成员(实例成员): 数据成员能够分静态变量.非静态变量两种. 静态成员属于类,而非静态成员(实例成员)属于对象. 对于类的数据成员来说.假设是静态的,那么他将是类的一部分,为全部实例共享,假设是非静态的.则每一个实例有一份考贝. 类的非静态成员属于类的实例全部,每创建一个类的实例都在内存中为

.NET 基础 一步步 一幕幕[面向对象之静态、非静态]

静态.非静态 先来看一段代码来区分静态与非静态: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace 静态和非静态的区别 { /** * 非静态类 * 既可以定义静态字段.静态属性.静态方法. * 也可以定义非静态(实例成员)字段.非静态(实例成员)属性.非静态(实例成员)静态方法. **/ //非

静态与非静态的异同

转载至-http://bbs.51cto.com/thread-1025127-1.html 静态类 vs 普通类静态类与普通类的区别有以下几点:1)静态类无法实例化而普通类可以:2)静态类只能从System.Object基类继承:普通可以继承其它任何非static和非sealed类,但也只能继承一个类:3)静态类不能继承接口:普通类可以继承多个接口:4)静态类只能包含静态成员:普通类可以包含静态和非静态成员:5)静态类不能作为字段,方法参数和局部变量使用:普通类可以;静态类的意义:可以用静态类