共计 2501 个字符,预计需要花费 7 分钟才能阅读完成。
1、构造方法概述
1.1、什么是构造方法
构造方法是正常开发中不可或缺的一部分,是语法上必须存在的。是一个具有特殊格式的方法,且有特殊的调用方式。
1.2、构造方法作用
1.2.1、实例化对象
用来创建实例对象的方法,给对象的数据进行初始化,如:
Person p = new Person();
调用构造方法 Person(); 只是我们没有写这个方法,而是 Java 自动补齐了这个方法,是方法就可以传入参数。
1.2.2、初始化成员变量
创建对象时,可以直接为成员变量赋值,无需再在对象产生后再赋值。
int x;
public Person(){// 初始化 x 为 0
}
public Person(int x){this.x=x;// 局部变量赋值
}
1.3、构造方法定义
** 位置:** 一般定义在其他方法前,成员变量后。
** 定义规则:** 一般用 public 修饰,没有返回值类型定义,方法名与类名相同,参数依据需求而定。
public 类名 (参数类型 参数 1,参数类型 参数 2,…){
// 创建对象时要执行的逻辑,经常为成员变量赋值
}
public class Person{private String name;
private int age;
// 两个构造方法为重载关系
public Person() {} // 空参的构造方法
public Person(String name,int age) {// 带参的构造方法
this.name = name;
this.age = age;
}
}
2、构造方法表现形式
2.1、默认构造方法
构造方法是必须存在的,如果没有手动给出构造方法,Java 会自动为我们补齐一个无参的构造方法。这个过程我们是看不到的。
如果手动给出了构造方法,java 则不会再自动补齐任何构造。
public class Person{public static void main(Stringa args[]){Person p= new Person();}
}
public class Person{public Person(int age){}
public static void main(String args[]){Person p= new Person();}
}
2.2、无参构造
无参的构造方法,一般情况下是我们的默认构造方法
public class Person{public Person(){}
public static void main(Stringa args[]){Person p= new Person();}
}
2.3、有参构造
带参的构造方法通常是为了给属性赋值的
public class Person{public Person(String name,int age){}
public Person(int age){}
public static void main(Stringa args[]){Person p= new Person();}
}
3、构造方法应用
3.1、创建对象和初始化值
同其他方法相同,构造方法也是先定义再使用。而不同的是,其他方法的调用是为了这个方法对应的功能,而构造方法的功能就是创建对象,同时可以为属性赋值。
我们在此之前创建对象的方式均是通过构造方法,这样当对象创建出来后就已经具备了非默认值的初始值。
new 类名 ([实参列表]);
Person p = new Person(); // 产生了 Person 的对象
System.out.println(p); // 打印结果为一个对象地址值,如 0x9a64
System.out.println(p.getName()); // 打印结果为 null
Person p2 = new Person(“AngelaBaby”,18); // 产生了一个 Person 对象
System.out.println(p2); // 打印结果为一个对象地址值,如 0252b2
System.out.println(p2.getName()); // 打印结果为 AngelaBaby
3.2、注意事项
接口没有构造方法,抽象类具有构造方法
构造方法不能被继承,如:父类叫 Person,子类叫 Student 继承构造方法后,那么我 new Person() 后是子类的对象,还是父类的对象,我们分不清楚。而且构造方法要求与类名相同,那么子类里面的 Person 构造方法和类名冲突了
构造方法的 public 并不是固定不变的,可以使用其他格式修饰构造方法。如:public、default、private
3.3、构造方法与 set 方法
构造方法是为了在创建的同时直接为属性赋值。
set 方法时在创建对象之后,再重新为成员变量赋值,是修改值的过程。
public class Animal {private String name = "柳岩";
private int age;
// 无参
public Animal(){ }
/**
* 带参的构造方法 用来给成员变量赋值
* @param name 第一个参数需要一个名字
* @param age 第二个参数需要一个年龄
*/
public Animal(String name,int age){this.name = name;
this.age = age;
}
public String getName() {return name;
}
public void setName(String name) {this.name = name;
}
public int getAge() {return age;
}
public void setAge(int age) {this.age = age;
}
}
public class TestDemo {public static void main(String[] args) {Animal a = new Animal();
System.out.println(a.getName());
System.out.println(a.getAge());
System.out.println("--------------");
Animal a2 = new Animal("刘柳",20);
a2.setName("刘艳");
System.out.println(a2.getName());
System.out.println(a2.getAge());
}
}
运行结果: