Java基础-构造函数

1、什么是构造函数

        java构造函数,也叫构造方法,是JAVA中一种特殊的函数,与函数名相同,无返回值

作用:

 一般用来初始化成员属性和成员方法的,即new对象产生后,就调用了对象的属性和方法

构造函数是对象一建立就运行,给对象初始化,就包括属性,执行方法中的语句

而一般函数是对象调用才执行,用“.方法名”的方式,给对象添加功能

一个对象建立,构造函数只运行一次

而一般函数可以被该对象调用多次

2、构造函数的特点

        一、函数名与类名相同

        二、不用定义返回类型(不同于void类型返回值,void是没有具体返回值类型,构造函数是连类型都没有)

        三、不可以写return语句(返回值类型都没有,姑不需要return语句)

        注意:一般函数是不能调用构造函数,只有构造函数才能调用构造函数

 3、代码举例

一、无参构造函数类中只定义一个方法。

        构造器总是伴随着new操作一起调用

        new对象时,就调用与之对应的构造函数,执行这个方法,不必写“.方法名”

public class Demo {
    public static void main(String[] args) {
        //输出Hello World。new对象一建立,就会调用对应的构造函数Confun(),并执行其中的println语句。
        Confun c1=new Confun();            
         
    }
}
class Confun{        
    Confun(){        
        //定义构造函数,输出Hello World
        System.out.println("Hellow World");
    }
}

结果:

Hellow World 

二 、有参构造函数

        在new对象时,将实参传给private变量,相当于完成setter功能

public class Demotwo{
    public static void main(String[] args){
        //实例化对象时,new Person()里直接调用Person构造函数并转转实参,相当于setter功能
        Person z = new Person("aerchi",18); 
        z.show();
    }
}
  
class Person{
    private String name;
    private int age;
    //有参数构造函数,实现给private成员变量传参数值的功能
    public Person(String n,int m){ 
        name=n;
        age=m;        
    }
    //getter                                      
    //实例化对象时,完成了sett功能后,需要getter,获取实参值。
    public String getName(){
        return name;
    }
    public int getAge(){
        return age;
    }
  
    //获取private值后,并打印输出
    public void show(){
        System.out.println(name+"\n"+age);
    }
}

结果:

aerchi

18

### Java 中的构造函数概念与用法 #### 构造函数定义 在 Java 中,构造函数是一种特殊的方法,用于初始化对象的状态。它具有与类相同的名称,并且没有返回类型(即使是 `void` 也不允许)。每当通过 `new` 关键字创建一个新对象时,都会调用相应的构造函数。 #### 默认构造函数 如果没有为类显式声明任何构造函数,则 Java 编译器会自动生成一个默认的无参构造函数[^4]。然而,一旦开发者提供了至少一个构造函数,无论是否有参数,默认的无参构造函数将不再存在。 #### 参数化构造函数 除了无参构造函数外,还可以定义带有参数的构造函数以便于初始化对象的不同属性。例如,在实例化对象的同时传入必要的初始值[^2]: ```java public class Example { int x; public Example(int y) { // 带有一个整型参数的构造函数 this.x = y; } } ``` 在此示例中,当创建一个新的 `Example` 对象并传递数值 `5` 给其构造函数时,成员变量 `x` 将被赋值为 `5`。 #### 多个构造函数之间的调用 (`this`) 为了减少重复代码,可以在同一个类内的不同构造函数之间互相调用。这种情况下需要用到 `this` 关键字来指代当前正在构建的对象以及指定要调用的具体构造函数版本[^1]。注意的是,这样的调用必须作为第一条语句出现在目标构造函数内部。 以下是利用 `this` 进行构造函数间调用的一个简单例子: ```java public class Person { String name; int age; public Person() { // 无参构造函数 this("Unknown", 0); // 调用了两个参数的构造函数 } public Person(String n, int a) { // 双参数构造函数 name = n; age = a; } } ``` 在这个案例里,当我们使用无参构造函数创建一个人的时候,实际上最终执行的是双参数形式的构造过程,其中名字设定了未知 ("Unknown") 年龄设定成了零 (0)[^1]。 #### 子类中的构造函数 对于继承关系下的子类而言,如果希望在其构造过程中也完成对父类部分数据成员的初始化工作的话,就需要借助 `super()` 来实现这一点;而且同样地,这类操作也需要放在整个子类构造体的第一条有效指令位置上。另外值得注意的一点就是假如子类别未明确指出要去呼叫哪一个超类建置程式的话,那么就会预设去寻找那个没有任何输入项的标准版—即所谓的「no-argument constructor」; 若然找不到这样一个匹配选项则会产生编译期错误提示信息出来告知使用者修正相应设计逻辑缺陷之处[^3]。 ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值