面向对象-定义静态 static

开发工具:eclipse

关键技术:javaSE

作者:林锦铅

撰写时间:20190417

定义静态  static

注意:主函数是固定格式的,作为程序的主入口,被JVM识别、调用

public static void main(String[] args) {}

静态修饰的内容有成员变量和函数

什么时候定义静态变量(类变量)?

  1. 当对象中出现共享数据时,该数据被静态所修饰
  2. 对象中的特有数据要定义成非静态存在于堆内存中
  3. 静态随着类的加载而加载。而且优先于对象

什么时候定义静态函数?---为代码严谨性

1,成员变量。(数据共享时静态化)

该成员变量的数据是否是所有对象都一样: 

如果是,那么该变量需要被静态修饰,因为是共享的数据。

如果不是,那么就说这是对象的特有数据,要存储到对象中

2,成员函数。(方法中没有调用特有数据时就定义成静态)

当功能内部没有访问到非静态数据(对象的特有数据),那么该功能可以定义成静态

public class Demo1 {

public static void main(String[] args) {

//2没有访问到对象数据,不需要声明对象,浪费内存

person.show();

}

}

class person{

//3对象数据

String name;

//1该函数内部没有访问到非静态数据(对象的特有数据),定义成静态

public static void show() {

System.out.println("张三")

}

}

【1】成员变量和静态变量的区别: 

1,成员变量所属于对象。所以也称为实例变量。

静态变量所属于类。所以也称为类变量。

2,成员变量存在于堆内存中。

静态变量存在于方法区中。

3,成员变量随着对象创建而存在。随着对象被回收而消失。

静态变量随着类的加载而存在。随着类的消失而消失。

4,成员变量只能被对象所调用 。

静态变量可以被对象调用,也可以被类名调用。

所以,成员变量可以称为对象的特有数据,静态变量称为对象的共享数据。

【2】弊端

1,有些数据是对象特有的数据,是不可以被静态修饰的。因为那样的话,特有数据会变成对象的共享数据。

这样对事物的描述就出了问题。所以,在定义静态时,必须要明确,这个数据是否是被对象所共享的。

2,静态方法只能访问静态成员,不可以访问非静态成员。

因为静态方法加载时,优先于对象存在,所以没有办法访问对象中的成员。

3,静态方法中不能使用 this,super 关键字。

因为 this 代表对象,而静态在时,有可能没有对象,所以 this 无法使用。

4,主函数是静态的

 

猜你喜欢

转载自blog.csdn.net/weixin_44548366/article/details/89363670