(java)构造方法

构造方法
构造方法是专门用来创建对象的方法,当我们通过关键字来new来创建对象时,其实就是调用构造方法

格式:
public 类名称(参数类型 参数名称){
方法体;
}

注意事项:
1、构造方法的名称必须要和所在的类的名称 完全一样 ,就连大小写也要一样
2、构造方法不要写返回值和类型,连void都不写
3、构造方法不能return一个具体的返回值
4、如果没有编写任何构造方法,那么编译器会默认赠送一个构造方法,没有参数,方法,什么事情也不做 代码如下:
public Student(){}
3、一旦编写了至少一个构造方法,那么编译器将不再赠送

代码:

package com.company;


public class Main {

    public static class Student{
        //成员变量
        String name;
        int age;

        public Student(){ //构造方法
            System.out.println("无参构造方法执行啦!");

            System.out.println("华丽的分割线===================");
        }



        //利用构造方法赋值
        public Student(String name, int age){
            System.out.println("全参构造方法执行啦!");
            this.name = name;
            this.age = age;

        }

        //getter setter
        public String getName() {
            return name;
        }

        public int getAge() {
            return age;
        }

        public void setName(String name) {
            this.name = name;
        }

        public void setAge(int age) {
            this.age = age;
        }
    }

    public static void main(String[] args) {
        //此时new一个Student,便会触发构造方法
        Student S = new Student();

        Student S2 = new Student("床柜",21);

    }


}

运行结果:

无参构造方法执行啦!
华丽的分割线===================
全参构造方法执行啦!

### Java 构造方法的用法及其示例 #### 什么是构造方法? 在 Java 中,构造方法是一种特殊的方法,用于创建并初始化对象的状态。它具有与类相同的名称,并且不返回任何数据类型(甚至 `void`)。当通过 `new` 关键字实例化一个新对象时,相应的构造方法会被调用来完成必要的初始化工作。 #### 默认构造方法 如果开发者未显式定义任何构造方法,则编译器会自动提供一个无参的默认构造方法[^1]。然而,一旦定义了一个自定义构造方法,默认构造方法将不再由编译器生成。 ```java public class MyClass { int value; // 自动提供的默认构造方法(如果没有定义其他构造函数) public MyClass() { this.value = 0; } } ``` #### 参数化的构造方法 参数化的构造方法允许传递初始值给对象属性,在创建对象的同时设置其状态。 ```java public class Person { String name; int age; // 带有参数的构造方法 public Person(String name, int age) { this.name = name; this.age = age; } @Override public String toString() { return "Person{name='" + name + "', age=" + age + "}"; } } // 使用带参数的构造方法来创建对象 Person person = new Person("Alice", 30); System.out.println(person.toString()); // 输出: Person{name='Alice', age=30} ``` #### 静态工厂方法 vs 构造方法 尽管可以通过静态工厂方法替代传统的构造方法实现对象创建,但它们之间存在一些差异。例如,静态工厂方法可以拥有有意义的名字、返回缓存的对象或者子类型的实例等特性[^3]。 ```java class MyBeanFactory { private static final Map<String, MyBean> cache = new HashMap<>(); public static synchronized MyBean getMyBeanInstance(String key) { if (!cache.containsKey(key)) { cache.put(key, new MyBean()); } return cache.get(key); } } // 调用静态工厂方法获取对象实例 MyBean myBean = MyBeanFactory.getMyBeanInstance("uniqueKey"); ``` #### 复合模式中的构造方法应用 某些设计模式如单例模式也依赖于私有的构造方法防止外部随意实例化该类[^1]。 ```java public class SingletonExample { private static SingletonExample instance; // 私有化构造方法阻止外界直接访问 private SingletonExample() {} public static SingletonExample getInstance() { if(instance == null){ instance = new SingletonExample(); } return instance; } } ``` #### 注意事项 - 如果尝试除以零的操作将会抛出 ArithmeticException 异常;但是有一种特殊情况即最小整数值被负一相除不会引发异常而是保持原样[^4]。 - 功能测试关注的是应用程序的功能需求是否满足预期行为而不涉及内部结构细节[^5]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值