初学者可能会搞晕或者是不理解,个人认为要理解并区分方法与构造方法 我们首先应该了解他们的作用,用作用做对比才能方便区分,接下来才是慢慢了解如何使用。

首先先简单了解一下大概作用

方法: 方法是语句的集合,它们在一起执行一个功能。实际上就相当于python或者c中的函数。

构造方法: 构造方法其实就是对类进行里面数据的初始化定义,它是方法中的一种(方法分为三种,接下来会说到),你可以有也可以没有。没有系统会自动给你生成一个无参的。重点也是需要提前强调的是它需要与类名相同。

之后继续说

方法: 一个类中的方法分为三类: 1)全局方法 2) 成员方法 3)构造方法

public class Test{
private int xxx;
public Test(int age){ //这是构造方法
xxxxxx
}
public void xxxxxx(int xxxx){ //这是成员方法
xxxxxx
}
public static int xxxxx(){ //这是全局方法,加了static ,成员方法就会变成全局方法
return xxxxx;
}
}
1
2
3
4
5
6
7
8
9
10
11
12
publicclassTest{
privateintxxx;
publicTest(intage){//这是构造方法
xxxxxx
}
publicvoidxxxxxx(intxxxx){//这是成员方法
xxxxxx
}
publicstaticintxxxxx(){//这是全局方法,加了static ,成员方法就会变成全局方法
returnxxxxx;
}
}

三者区别:

成员方法必须构造类的实例化对象进行访问

全局方法可以用类直接访问

构造方法是实例化对象时进行初始化的

一般情况下,定义一个方法包含以下语法:

修饰符 返回值类型 方法名(参数类型 参数名){

...

方法体

...

return 返回值;

}
1
2
3
4
5
6
修饰符返回值类型方法名(参数类型参数名){
...
方法体
...
return返回值;
}

修饰符:修饰符,这是可选的,告诉编译器如何调用该方法。定义了该方法的访问类型。

返回值类型 :方法可能会返回值。returnValueType 是方法返回值的数据类型。有些方法执行所需的操作,但没有返回值。在这种情况下,returnValueType 是关键字void。

方法名:是方法的实际名称。方法名和参数表共同构成方法签名。

参数类型:参数像是一个占位符。当方法被调用时,传递值给参数。这个值被称为实参或变量。参数列表是指方法的参数类型、顺序和参数的个数。参数是可选的,方法可以不包含任何参数。

方法体:方法体包含具体的语句,定义该方法的功能。

构造方法

在创建对象的时候,对象成员可以由构造函数方法进行初始化。

也就是我们创造实例化的代码中 new后面跟的就是构造方法

Telphone phone=new Telphone();
1
Telphonephone=newTelphone();
等号右面
new Telphone()
1
newTelphone()

相当于是以Telphone类为模板,在堆空间里创建一个Telphone类对象

末尾的()代表着,在对象创建后,立即调用Telphone类的构造函数,对刚生成的对象进行初始化。

等号左面

Telphone phone
1
Telphonephone

创建命名了一个Telphone类引用变量phone

这里用一下imooc的图

JAVA普通方法结构 java中的方法和构造方法_Test

接下来再说下有参和无参的构造方法的区别

有参就是你可以在创建对象时候赋值

public Test(String name){
mz=name;
}
1
2
3
publicTest(Stringname){
mz=name;
}

Test为构造方法(函数)名 需要与类名相同

创建对象

Test name=new Test("xxxxx");

1

Testname=newTest("xxxxx");

无参就需要这样

public Test(){
}
public String mingzi(String name){
mz=name;
return mz;
}
1
2
3
4
5
6
publicTest(){
}
publicStringmingzi(Stringname){
mz=name;
returnmz;
}
创建对象并赋值
Test nick=new Test();
nick.mingzi="ruilin";
1
2
Testnick=newTest();
nick.mingzi="ruilin";

总的来说,有参构造函数和无参构造函数都可以提前初始化一些值,但是有参可以在实例化时就进行赋值而无参不可以。这些赋值或者说初始化都是为了后面调用方法(函数)更加方便或者是去提供一些功能所必要的参数来防止报错,这也就是构造方法的作用。

最后再放一个有参的构造方法的例子便于理解

public class Testff {
int num;
public Testff(int n){
num = n;
}
public int numb(int a,int b){
System.out.println(a+"\n"+b+"\n"+num);
int c=a+b+num;
return c;
}
public static void main(String[] args) {
Testff test=new Testff(11);
System.out.println(test.num+"\n"+"---------");
System.out.println(test.numb(1,2));
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
publicclassTestff{
intnum;
publicTestff(intn){
num=n;
}
publicintnumb(inta,intb){
System.out.println(a+"\n"+b+"\n"+num);
intc=a+b+num;
returnc;
}
publicstaticvoidmain(String[]args){
Testfftest=newTestff(11);
System.out.println(test.num+"\n"+"---------");
System.out.println(test.numb(1,2));
}
}
output:
11
---------
1
2
11
14
1
2
3
4
5
6
11
---------
1
2
11
14

以上就是我对java中方法与构造方法的理解与区分,其中也简述了对有参与无参构造方法的一些理解,欢迎交流。