JAVA构造函数

构造函数的作用: 给对应的对象进行初始化。


构造函数的定义的格式:

修饰符 函数名(形式参数){
函数体...
}

构造函数要注意的细节:
1. 构造函数 是没有返回值类型的。
2. 构造函数的函数名必须要与类名一致。
3. 构造函数并不是由我们手动调用的,而是在创建对应的对象时,jvm就会主动调用到对应的构造函数。
4. 如果一个类没有显式的写上一个构造方法时,那么java编译器会为该类添加一个无参的构造函数的。
5. 如果一个类已经显式的写上一个构造方法时,那么java编译器则 不会再为该类添加 一个无参 的构造方法。
6. 构造函数是 可以在一个类中以函数重载 的形式存在多个 的。


疑问:创建对象时,jvm就会调用到对应的构造方法,那么我们以前没有学构造方法,那么
以前创建对象时,jvm是否 也会调用构造方法呢?如果有?构造方法从何而来呢?

会调用, java编译器在编译的 时候给加上去的。

jdk提供了一个java开发工具(javap.exe)给我们进行反编译的。


javap 反编译工具的使用格式:

javap -c -l -private 类名

疑问: java编译器添加 的无参构造方法的权限修饰符是 什么?
与类的权限修饰是一致的。


构造函数与普通 函数的区别:
1. 返回值类型的区别:
  1. 构造函数是没有返回值类型 的,
  2. 普通函数是有返回值类型的,即使函数没有返回值,返回值类型也要写上void。
2. 函数名的区别:
  1. 构造函数的函数名必须要与类名一致,
  2. 普通函数的函数名只要符合标识符的命名规则即可。
3. 调用方式的区别:
  1. 构造函数是 在创建对象的时候由jvm调用的。
  2. 普通函数是由我们使用对象调用的,一个对象可以对象多次普通 的函数,
4. 作用上的区别:
  1. 构造函数 的作用用于初始化一个对象。
  2. 普通函数是用于描述一类事物的公共行为的。

转载于:https://www.cnblogs.com/xufengyuan/p/5934076.html

### Java 构造函数概述 构造函数用于初始化新创建的对象状态。每个类都有构造函数;如果没有显式定义任何构造函数Java 编译器将提供一个默认的无参构造函数[^3]。 一旦自定义了构造函数,默认的无参构造函数不再存在。因此,在设计类时应考虑是否需要额外定义无参构造函数或其他形式的构造函数。 ### this 关键字调用其他构造函数 在同一类内可以通过 `this` 关键字调用其他的构造函数,从而简化代码并提高可维护性。需要注意的是,使用 `this()` 调用必须放在构造函数的第一条语句位置[^1]。 #### 示例:通过 this() 实现构造函数间调用 ```java public class Person { private String name; private int age; public Person(String name) { // 单参数构造函数 this(name, 0); // 调用了双参数版本 } public Person(String name, int age) { // 双参数构造函数 this.name = name; // 初始化成员变量 this.age = age; } } ``` 上述代码展示了如何利用 `this` 来减少重复代码,单参数构造函数直接委托给更全面的双参数构造函数处理对象初始化工作。 ### 继承中的构造函数行为 对于继承关系下的类来说,子类实例化过程中会先执行其父类的构造过程。如果子类构造器未明确指定要调用哪个超类构造器,则系统自动尝试调用超类的无参构造器。若此时不存在这样的构造器则会导致编译失败[^2]。 为了确保程序能够正常运行,建议总是显示地指明想要使用的父级构造方式: ```java class Animal { protected String type; public Animal() {} // 默认构造器 public Animal(String t){ this.type=t; } } class Dog extends Animal{ public Dog(){ super(); // 明确指出调用Animal的无参构造器 } public Dog(String breed){ super(breed); } } ``` 这里展示了一个简单的继承结构以及如何正确地在子类中调用父类的不同类型的构造器。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值