java入门(十六) | OOP(三)之构造方法
构造方法
1.1 概念
构造方法是一种特殊的方法,它是一个与类同名的方法。
对象的创建就是通过构造方法来完成.
其功能主要是完成对象的创建或者对象的初始化。
当类实例化new一个对象时会自动调用构造方法。
构造方法和其他方法一样也可以重载(方法名相同+参数列表不同)。
1.2 形式
有无参构造和有参构造两种
修饰符 类名([参数列表]){
代码……
}
1.3 练习1:构造方法创建对象
- 一个.java文件中可以有多个类,但是,只能有一个类被public修饰,而且这个类名就是.java的文件名
- new Person() 创建对象时,会自动调用无参构造方法
- 无参构造方法,默认就会存在,前提是没有含参构造
- 重载的构造方法中方法名可以相同,但是参数列表必须不同
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.4 练习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 + "]";
}
}