Java中普通方法与构造方法

本文深入解析Java中的构造方法与普通方法,探讨两者在功能、定义、调用及返回值上的区别,帮助初学者掌握Java方法的核心概念。

相信很多初步接触Java方法的小伙伴都对普通方法和构造方法理解不到位,希望本文对读者有所启示

一、方法的简介:

Java方法是语句的集合,它们在一起执行一个功能。

(1)方法是解决一类问题的步骤的有序组合
(2)方法包含于类或对象中
(3)方法在程序中被创建,在其他地方被引用

1、构造方法:

构造方法是类的一种特殊方法,用来初始化类的一个新的对象,在创建对象(new 运算符)之后自动调用。Java 中的每个类都有一个默认的构造方法,并且可以有一个以上的构造方法。

Java 构造方法有以下特点:
1、方法名必须与类名相同
2、可以有 0 个、1 个或多个参数
3、没有任何返回值,包括 void
4、默认返回类型就是对象类型本身
5、只能与 new 运算符结合使用(这一点下文会详细说明)

2、普通方法:

1、java的普通方法可以操作调用它从属的对象的属性和参数列表中的参数
2、普通方法的调用方式:对象.方法名(参数),比如Car类的对象anotherCar中的driverCar方法,调用方式为:anotherCar.driverCar();
3、java方法只能有一个返回值,但“值”的形式具有多样性

四、方法的定义:

1、构造方法语法结构:

public(修饰符) class(定义类的关键字) Test(类名)(){
//无参
Test(类名)(){ }
//带一个参数
Test(类名)(String(变量类型) name(变量名)){ }
}
在这里插入图片描述

2、普通方法语法结构:

定义类:
public(修饰符) class(定义类的关键字) Test(类名)(){
private(修饰符) static(修饰符) String(变量类型) s(变量名) = “hello world”;
下面是方法的定义
public(修饰符) static(修饰符) void(返回值类型) main(方法名)(String[] args(参数)){
System.out.println(s);(代码语句)
}
}
在这里插入图片描述

五、方法的调用:

1、构造方法:

new 构造方法名(实参列表)
例如:承接上文所述定义的Date构造方法,下面进行调用
在这里插入图片描述
由上图可以看出,若想要调用构造方法,必须先要为其创建对象,然后使用对象去对该方法进行调用

2、普通方法:

(1)方法修饰符中有static时:类名.方法名(实参列表)
(2)方法修饰符列表中没有static时:引用.方法名(实参列表)
!!注意:(new一个对象也可以调用static,但是即使new了一个对象,调用过程实际没有用到该对象!!因为static静态变量不依托于对象而存在没不占用对象空间)
以上文中定义的doOther为例:
在这里插入图片描述

六、方法的返回值问题:

1、构造方法:

(1)每一个构造方法执行结束都有返回值,只是这个“return”不需要写,并且返回值类型是构造方法所在的类型
(2)由于构造方法返回值所在类型就是类本身,故返回值类型不需要编写,若编写返回值,就将变成普通方法
(3)当一个类中没有定义任何构造方法,系统默认提供一个无参数的构造方法,这个构造方法称为缺省构造器
(4)当一个类显示将构造方法定义出来,系统不再默认为这个类提供缺省构造器,建议开发中手动为当前类提供无参数的构造方法
(注:如果大家觉得不好理解,举个简单例子:

public class ConstructorTest01 {
   public static void main(String[] args){
           int i = sum(2, 3);
           /*若已定义了sum的求和函数,那么执行完等号右边的求和操作,
             再赋给左边的i,那么返回值就是数据类型为int的"i" */
             
           User u = new User();
           /*同理,User也可以看成一个类似于int的数据类型,当等号右边
             完成new对象操作后返回值类型就是数据类型为User的"u" */
    }
}

2、普通方法:

一般在定义方法的时候在Java语句中有体现,
例如:

  public static void doOther() {

        Customer c = new Customer();
        System.out.println(c.name);
    }

七、总结:

简单的说,这两种方法最根本的区别就是构造方法调用时需要创建对象,而普通方法调用时直接可以通过类名去调用。
希望本文对大家理解这块知识点有所帮助

<think>嗯,用户想了解Java普通方法构造方法的区别、特点及使用场景。我需要先回忆一下相关的知识,然后结合提供的引用资料来整理答案。 首先,构造方法,根据引用3,构造方法是在实例化对象时调用的特殊方法,用于初始化对象的属性。它的特点包括必须名同名、没有返回值、可以有多个参数、不能被继承或重写,但可以重载。而普通方法则不同,它们有返回型,可以被多次调用,用于执行特定功能。 然后,引用5中的例子展示了构造方法普通方法的使用。构造方法在创建对象时自动调用,比如Student构造方法初始化成绩,而普通方法如add()则是在需要时被调用,计算总分。 区别方面,构造方法用于对象初始化,普通方法用于执行操作。构造方法在new时调用一次,普通方法可多次调用。语法上,构造方法没有返回型,普通方法必须有。此外,构造方法不能继承,而普通方法可以被子重写。 使用场景的话,构造方法适合设置初始状态,比如设置默认值或参数初始化。普通方法则处理对象的行为,如计算、修改状态等。需要提到的是,如果中没有构造方法,编译器会提供默认的无参构造方法,但如果定义了带参构造方法,必须显式定义无参构造方法,否则无法使用无参构造,这点引用2有提到。 还要注意,构造方法可以调用父构造方法通过super(),而普通方法没有这个功能。同时,构造方法普通方法可以同名,但构造方法没有返回型,所以不会冲突,如引用3中的例子。 总结的时候需要分点说明,确保结构清晰,可能用表格对比更直观。最后生成相关问题,比如如何重载构造方法构造方法能否被继承等,帮助用户深入理解。</think>### Java普通方法构造方法的区别、特点及使用场景 #### 一、核心区别 | **特征** | **构造方法** | **普通方法** | |-------------------|---------------------------------------|---------------------------------------| | **调用时机** | 对象实例化时自动调用(伴随`new`操作) | 通过对象显式调用 | | **返回值** | 无返回值(连`void`也不能写) | 必须有返回值(若无需返回则声明为`void`) | | **命名规则** | **必须名完全相同** | 遵循驼峰命名法 | | **继承性** | 不可继承,不可重写 | 可继承,可重写 | | **调用次数** | 每个对象生命周期内仅调用一次 | 可被多次调用 | | **初始化作用** | 为对象属性赋初值 | 实现对象的具体行为或功能 | #### 二、特点详解 1. **构造方法** - 必须通过`new`操作符触发调用,例如: $$ \text{Student student = new Student();} $$ 此时调用`Student`的无参构造方法[^3]。 - 支持重载:可通过不同参数列表定义多个构造方法(如无参构造方法、带参构造方法)[^2][^3]。 - 若未显式定义构造方法,编译器会自动生成无参构造方法;若已定义带参构造方法,**必须显式添加无参构造方法**才能使用无参初始化[^2][^3]。 - 可通过`super()`显式调用父构造方法,且必须在子构造方法的首行[^3]。 2. **普通方法** - 需通过对象实例调用,例如: $$ \text{student.calculateScore();} $$ - 可定义静态方法(`static`修饰),直接通过名调用[^4]。 - 支持重写(面向对象多态性)重载(相同方法名不同参数列表)。 #### 三、使用场景对比 | **场景** | **构造方法** | **普通方法** | |-------------------------|---------------------------------------|---------------------------------------| | **对象初始化** | 强制属性初始化(如数据库连接配置) | 不适用 | | **动态赋值** | 通过带参构造方法灵活赋初值 | 通过`setter`方法修改属性 | | **功能实现** | 不适用 | 实现业务逻辑(如计算、数据验证) | | **代码复用** | 通过`this()`调用同其他构造方法 | 通过方法封装重复逻辑 | #### 四、代码示例 ```java // 构造方法普通方法共存 public class Student { private String name; // 构造方法1:无参构造 public Student() { this.name = "Unknown"; } // 构造方法2:带参构造 public Student(String name) { this.name = name; } // 普通方法:修改属性 public void setName(String name) { this.name = name; } // 普通方法:执行操作 public void printInfo() { System.out.println("Student: " + name); } } ``` #### 五、常见误区 1. **构造方法中调用普通方法**: 虽然语法允许,但可能导致对象未完全初始化时触发逻辑错误。 2. **方法同名问题**: 构造方法普通方法同名,但需注意返回值差异。例如: ```java public class Example { public Example() {} // 构造方法 public void Example() {} // 普通方法(不推荐) } ```
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值