java入门(十六) | OOP(三)之构造方法

java入门(十六) | OOP(三)之构造方法

构造方法

1.1 概念

构造方法是一种特殊的方法,它是一个与类同名的方法。
对象的创建就是通过构造方法来完成.
其功能主要是完成对象的创建或者对象的初始化。
当类实例化new一个对象时会自动调用构造方法。
构造方法和其他方法一样也可以重载(方法名相同+参数列表不同)。

1.2 形式

有无参构造和有参构造两种

修饰符  类名([参数列表]){
       代码……
}

1.3 练习1:构造方法创建对象

  1. 一个.java文件中可以有多个类,但是,只能有一个类被public修饰,而且这个类名就是.java的文件名
  2. new Person() 创建对象时,会自动调用无参构造方法
  3. 无参构造方法,默认就会存在,前提是没有含参构造
  4. 重载的构造方法中方法名可以相同,但是参数列表必须不同
package cn.qile.constructor;

public class Test1_Constructor {
    public static void main(String[] args) {
        //创建Person对象
        //1、new Person()创建对象时,会自动调用 无参 构造方法
        Person p = new Person();

        //自动调用含参 的构造
        Person p2 = new Person("jack");

        //自动调用含参 的构造
        Person p3 = new Person("jack",10);

    }
}
//创建Person类
class Person{
    //构造方法:修饰符  类名(){}
    //2、无参构造,默认就会存在,前提是没有含参构造
    public Person() {
        System.out.println("构造方法");
    }
    //3、重载的构造方法:方法名可以相同+参数列表必须不同
    public Person(String n) {
        System.out.println("构造方法"+n);
    }
    public Person(String n,int age) {
        System.out.println("构造方法"+n+age);
    }

}

总结:

  1. 构造方法在什么时候被触发?在创建对象时触发
  2. 创建对象会触发哪个构造方法怎么决定?要看你创建对象是的参数列表,自动匹配要调用的构造方法

1.4 练习2:构造方法赋值

  1. 触发重载构造方法
  2. 构造方法给成员变量赋值
    (1). 在创建对象时需要把实参传递给形参
    (2).形参拿到值后再给成员变量赋值
package cn.qile.constructor;

//测试构造方法赋值
public class Test2_Constructor2 {

    public static void main(String[] args) {
        //创建Teacher对象测试
        Teacher t = new Teacher();

        //1、触发重载构造方法
        Teacher t2 = new Teacher("王一博",18,100000);

        //测试属性都有值了吗?有了,因为创建对象时已经给成员变量赋值了
//     System.out.println(t2.name);
//     System.out.println(t2.age);
//     System.out.println(t2.salary);

//     Teacher [name=王一博, age=18, salary=100000.0]
        System.out.println(t2);//因为Teacher类中提供了toString()


    }
}
//创建Teacher类
class Teacher{
    String name;
    int age;
    double salary;

    //无参构造,默认就存在,提供构造方法
    public Teacher() {
        System.out.println("构造方法");
    }

    //2、构造方法给成员变量赋值:在创建对象时需要把实参传递给形参n  a  s
    //形参n  a  s拿到值后给成员变量一一赋值
    public Teacher(String n,int a,double s) {
        name = n;
        age = a;
        salary = s;
    }
    //toString() --查看属性的值
    @Override
    public String toString() {
        return "Teacher [name=" + name + ", age=" + age + ", salary=" + salary + "]";
    }

}
hmoban主题是根据ripro二开的主题,极致后台体验,无插件,集成会员系统
自学咖网 » java入门(十六) | OOP(三)之构造方法