Java 静态函数

75 阅读4分钟

构造函数和一般函数的区别

从书写格式上看:

构造函数:没有返回值类型,连void都不能写;构造函数的函数名必须和类名     一样;不能用static关键字修饰;

一般函数:必须有一个返回值类型(是和构造函数最主要的区别);一般函数 名不要和类名一样;可以用static修饰,也可以不要;

如果一个函数函数名和类名一样,是否是构造函数,就要看有没有返回值类   型;没有,就是构造函数;

从调用方式上看:

构造函数:创建对象时由JVM调用的;一般函数不能调用构造函数;

一般函数:哪里需要哪里就可以调用;构造函数里面也可以调用一般函数;

从作用上看:

构造函数:主要用来在创建对象的时候,给对象的成员变量赋值用的;

一般函数:实现某个具体功能;

从一个对象可以调用次数上看:

构造函数:只有创建对象时会调用一次;

一般函数:没有次数限制;

构造函数之间的调用

image.png

1、构造函数中可以调用其他构造函数,不能直接通过函数名调用,而是需要使用this关键字来实现;

2、this调用构造函数,必须写在构造函数的第一行;

3、调用其他构造函数,要避免交叉调用(直接或者间接)

This关键字

this:表示对自身所属对象的引用;

this在哪个类中就表示哪个对象,如在Dog类中this就表示dog对象

This关键字作用

1、实现构造函数之间的相互调用

调用无参构造:this()

调用有参构造:this(参数)

2、在函数中区分成员变量和局部变量;

Static关键字

如果需要调用一个类中的方法,首先需要创建该类对应的对象,通过对象.属性、对象.方法。但是我们看一下random(),发现该方法可以通过类名.方法名直接调用,为什么?因为该方法被static修饰

 

static:静态;

static的作用:可以用来修饰类的成员(除了构造函数),修饰的成员都是静态的;

静态,表示和类的对象无关,直接和类本身有关,静态成员都直接可以使用类名访问;

静态函数

概念: 被static关键字修饰的函数就是静态函数;

格式: 直接将static关键字写在函数的返回值类型前面;

如果一个函数中没有使用非静态的成员,这个函数就要声明为静态函数,可以减少内存浪费;

 

静态函数的特点:

和类的对象无关,可以直接通过类名调用

只能调用静态函数和静态成员变量,不能使用和类的对象有关的成员(this关 键字;super关键字;非静态成员变量;非静态函数;)

非静态函数可以调用静态函数和非静态函数,也可以使用静态成员变量和非静 态成员变量;

Static使用细节

静态函数不能调用非静态函数和非静态成员变量

原因:

非静态函数和非静态成员变量都必须依赖类的对象使用;

而静态函数使用都不需要有对象,所以在静态函数中不能直接调用非静态函数和非静态成员变量;

 

非静态函数可以调用静态函数

原因:

非静态函数只能通过类的对象使用;如果可以调用非静态函数,说明此时已经存在对象;

已经存在对象,说明类已经加载完毕;

类已经加载完毕,所以静态函数肯定可以使用; 因为构造函数是在创建对象的时候用来给对象的成员变量赋值用的;

如果构造函数可以是静态的,就不需要对象就能使用,就没有意义;

 

静态函数中不能使用和对象有关的关键字

因为有些关键字,例如this,就是表示一个对象的引用的,而静态函数是没有对象就可以直接使用的,所以不能在静态函数里面使用this等关键字;

还有一个关键字:super;