初学者可能会搞晕或者是不理解,个人认为要理解并区分方法与构造方法 我们首先应该了解他们的作用,用作用做对比才能方便区分,接下来才是慢慢了解如何使用。
首先先简单了解一下大概作用
方法: 方法是语句的集合,它们在一起执行一个功能。实际上就相当于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的图
接下来再说下有参和无参的构造方法的区别
有参就是你可以在创建对象时候赋值
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中方法与构造方法的理解与区分,其中也简述了对有参与无参构造方法的一些理解,欢迎交流。