构造方法也叫做构造器。
构造方法的作用:开辟内存空间、创建实例、初始化属性值。
构造方法的特点:
-
方法名与类名相同 (大写敏感)public Student( );
-
不能声明返回类型,void也不行 //没有返回类型(也算对,但是不严谨)
-
不能使用return语句返回内容/不能有返回值
-
通常为public
注意:
-
如果没有明确提供构造方法,则系统会提供一个默认的构造方法,默认构造方法(也称为缺省构造方法)没有参数。
-
如果我们提供了一个构造方法,则系统不再提供无参数的默认构造方法。
-
如果我们提供了一个有参数的构造方法,同时又需要无参构造方法的话,则必须同时提供一个无参数的构造方法。
new运算符
new运算符实际是就是调用构造方法,创建一个新对象。当进入到构造方法内部时,实际上对象已经创建完毕,可以在构造方法中为各成员变量赋值。
this关键字
-
在类的内部,可以在任何方法中使用this引用当前对象。
-
使用this关键字解决在实例变量和局部变量之间可能发生的任何名称冲突。
-
局部变量,包括方法的形参,可以和类的实例变量重名。当局部变量和实例变量具有相同的名称时,局部变量隐藏了实例变量。
方法深入分析
方法可以看做是独立的功能模块,供其他模块调用,功能模块要有输入、输出,对于方法而言输入就是方法的参数,输出就是方法的返回值。调用者通过参数将需要输入的数据传递给方法,方法通过返回值将输出返回给调用者。
在一个方法中调用另外一个方法有两种情况:
-
同一个类中的方法相互调用:可以直接调用(本质上是使用this关键字调用)
-
不同类中的方法相互调用:对象.方法名
return关键字
-
return语句用于明确地从一个方法返回。即,return语句导致程序的执行控制转移回到方法的调用者。
-
如果return之后还有代码,也不会执行。
-
如果方法的返回类型为void,可以使用return跳出方法,但是不能使用return返回数据。
-
方法的返回值可以是对象。
参数传递的两种方式
方法调用中发生的数据传送是单向的。即只能把实参的值传送给形参,而不能把形参的值反向地传送给实参。因此在函数调用过程中,形参的值发生改变,而实参中的值不会变化。
两种参数传递方式:
-
值传递:参数类型为基本类型,参数传递时是将实参的值赋给形参,实参和形参是不同的变量。
-
引用传递:引用类型(对象)作为参数,参数传递时,实参和形参指向同一个对象。所以在方法中修改形参指向的对象会影响到实参所指向的对象(本来就是同一对象)。
方法重载
在同一个类中名称相同、形参列表不同的多个方法称为重载方法。
特点:
-
方法名相同
-
形参列表不同:形参的类型、形参的个数,形参的顺序
注意的地方:
-
返回值在区分重载方法时不起作用。访问修饰符也不起作用
-
当调用重载方法时,Java使用实参的类型和/或数量确定实际调用哪个版本
特别说明:在某个构造方法中可以使用this()调用重载的构造方法
static关键字
对于类中的成员变量和成员方法都可以使用static进行修饰。
main()方法是最常见的静态成员的例子。main()方法被声明为静态的,因为需要在创建所有对象之前调用该方法。
静态变量
对于类中的成员变量可以使用static进行修饰,这种变量叫做静态变量。
没有使用static修饰的变量叫做实例变量。
实例变量与静态变量的区别:
-
是否共享
-
实例变量:不共享,类的每个对象(实例)都有自己的实例变量
-
静态变量:共享,类的所有对象都共享同一个变量
-
-
访问方式
-
实例变量:只能通过对象访问
-
静态变量:类名.变量名(推荐)、对象.变量名(不推荐)
-
-
初始化时机
-
实例变量:创建类的对象时初始化
-
静态变量:当类被虚拟机加载初始化,创建类的任意对象之前已经初始化。
-
静态方法
对于类中的方法也可以使用static进行修饰,这种方法称为静态方法。
没有使用static修饰的方法称为实例方法。
静态方法和实例方法的区别(访问方式):
-
静态方法:可以通过类名(推荐)和对象(不推荐)
-
实例方法:只能通过对象访问
静态方法的特点:
-
不需要创建类的对象就可以直接通过类名调用静态方法,例如Math.random()。
静态的方法有几个限制:
-
只能访问类中的其他静态成员(静态变量、静态方法)
-
不能以任何方式引用this或super关键字
关于static的几点说明
-
static的本质作用是区分成员属于类还是属于实例(对象)
-
通常把使用static修饰的变量和方法称为类变量和类方法,有时也称为静态变量和静态方法,把不使用static修饰的变量和方法称为实例变量和实例方法。