Java 普通方法和构造方法的区别

本文详细介绍了构造方法的概念及其在Java中的应用。包括构造方法的特点、如何使用构造方法为对象实例变量赋值、构造方法的重载以及它与普通方法的区别。

---恢复内容开始---

 

构造方法:

方法名和 类名相同

②在方法名的前面没有返回值类型的声明

③在方法中不能使用return语句返回一个值

④在创建对象时,要调用new,如:book b1=new book();

⑤当没有指定构造方法时,系统会自动添加无参的构造方法

⑥当有指定构造方法时,无论该构造方法是有参,还是无参,系统都不会再自动添加无参的构造方法

⑦构造方法的重载:方法名相同,但参数不同的多个方法,调用时会自动根据不同的参数选择相应的方法

 

无参的构造方法

class person{

  public person(){

    System.out.println("无参的构造方法被调用了。。。");

  }

}

class Ex11{

  public static void main(String[] args){

     person p=new person();

  }

}

 

有参的构造方法(目的就是为了给对象实例变量赋值)

class person{

  int age;

  public person(int a){

    age=a;

  }

  public void speak(){

    System.out.println("I am "+age+" years old");

  }

}

class Ex11{

  public static void main(String[] args){

    person p=new person();

    p.speak();

  }

}

普通方法有返回类型,方法名小写,不能和类名相同,如:void XX(){}  普通方法:代表对象可以干什么

构造方法是初始化对象的重要途径,如:student s=new student();   s这个实例,是通过构造方法初始化的  构造方法:可创建一个对象,并可初始化对象的值

构造方法有对类属性得初始化的功能,如:public people(String name){this name=name;}或public people(){name="zangsan";age=11;}   完成了people类属性name或age的初始化

 

普通方法用来定义对象的功能行为,构造方法用来初始化

 

(其实我老觉得构造方法和普通方法差不多,傻傻分不清楚(T▽T),晚上继续研究( •̀ω•́ )✧)

转载于:https://www.cnblogs.com/chenyuan7/p/7899527.html

<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() {} // 普通方法(不推荐) } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值