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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 边亮 中级黑马   /  2013-3-11 21:32  /  1555 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

静态类跟非静态类 静态方法跟非静态方法有什么区别

评分

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

查看全部评分

5 个回复

倒序浏览
(1)静态类与非静态类的重要区别在于静态类不能实例化,也就是说,不能使用 new 关键字创建静态类类型的变量。在声明一个类时使用static关键字,具有两个方面的意义:首先,它防止程序员写代码来实例化该静态类;其次,它防止在类的内部声明任何实例字段或方法。
(2)最直观的差别:使用了static 修饰符的方法为静态方法,反之则是非静态方法。
①静态成员属于类所有,非静态成员属于类的实例所有。
②每创建一个类的实例,都会在内存中为非静态成员新分配一块存储;

评分

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

查看全部评分

回复 使用道具 举报
1.非静态类中可以有静态成员;

2.调用:实例类调用自己的非静态方法的时候,需要对象名.方法名();

实例类调用自己的静态方法的时候,需要类名.方法名();

3.静态方法中只能访问到静态成员。

详见下面代码实现

    //定义非静态类

    public class Person//非静态类

    {

        public static string Name { get; set; }

        public int Age { get; set; }

        public char Gender { get; set; }



        public static void SayHello()//静态方法

        {

            Console.WriteLine("大家好,我是{0}",Name);

        }

    }

    //静态成员的调用

static void Main(string[] args)

        {

            Person person = new Person();

            Person.Name = "张三";

            Person.SayHello();//类名.方法名()调用

            Console.ReadKey();

        }



4.静态类中不允许出现实例成员,哪怕是方法也不行

public static class Person

    {

        public static string Name { get; set; }

        //public int Age { get; set; }//如果类中包含注释部分实例成员,编译报错

        //public char Gender { get; set; }



        public static void SayHello()

        {

            Console.WriteLine("大家好,我是{0}",Name);

        }

注意:如果类中包含注释部分实例成员,编译报错。

5.不能创建静态类的对象

static void Main(string[] args)

        {

            //Person person = new Person();////如果类中包含注释部分创建实例对象,编译报错

            Person.Name = "张三";

            Person.SayHello();

            Console.ReadKey();

        }



6.经常把静态类当做 “工具类”,例如Console类的WriteLine(),调用时用采用类名.方法名;



总结:静态类中只能存在静态成员,不允许出现实例成员。

但是我们非静态类中可以有静态成员,也可以有非静态成员,

但是,静态成员访问不到实例成员。

非静态类中的非静态成员可以访问到静态成员。

评分

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

查看全部评分

回复 使用道具 举报
结构和类的区别
1、结构属于值类型的,类属于引用类型的。结构也可以有字段、属性和方法,甚至还可以
   有类,但是类没有用。
2、结构,用于一次声明多个不同类型的变量。结构中也有一个默认的没有参数的构造函
   数。
3、结构的构造函数中必须给字段赋值,不能给属性赋值,构造函数必须有参数。
4、结构不可以继承,类可以继承。
静态类和非静态的区别。

1、非静态类中可以有静态成员

2、调用:实例类调用自己的非静态方法的时候,需要对象名.方法名();

实例类调用自己的静态方法的时候,需要类名.方法名();【静态方法只能通过类名.方法名()调用】

3、静态方法中只能访问到静态成员

4、静态类中不允许出现实例成员,哪怕是方法也不行

5、不能创建静态类的对象



经常把静态类当做 “工具类”;

Console c=new Console();

c.WriteLine()

Console.WriteLine();



总结:静态类中只能存在静态成员,不允许出现实例成员。

但是我们非静态类中可以有静态成员,也可以有非静态成员,

但是,静态成员访问不到实例成员。

非静态类中的非静态成员可以访问到静态成员。



评分

参与人数 2技术分 +1 黑马币 +16 收起 理由
张文 + 1
边亮 + 16

查看全部评分

回复 使用道具 举报
静态和非静态的区别:
1.非静态类中可以有静态成员
2.调用:实例类调用自己的非静态方法的时候,需要对象名.方法名();
实例类调用自己的静态方法的时候,需要类名.方法名();【静态方法只能通过类名.方法名()调用】
3、静态方法中只能访问到静态成员
4.静态类中不允许出现实例成员,哪怕是方法也不行
5.不能创建静态类的对象

评分

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

查看全部评分

回复 使用道具 举报
补充一点:静态类不能被继承,静态方法 也不能被继承;静态类一般用作工具类。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马