目录
5.构造方法
(学完构造方法之后,要求知道构造方法的作用,以及能够使用构造方法)
5.1构造方法描述
构造方法是一种特殊的方法
作用:创建对象
格式:
public class 类名{
修饰符 类名(参数){
}
}
(这里的修饰符我们一般使用public)
看上述右边这个代码:
在main方法做了一件事情Student s1 = new Student();
这个动作是创建对象,我们重点看new后面的Student();
所以这个内容他就是一个方法。(这个方法他比较特殊,他是一个类名所以他是构造方法)
范例:
public class StudentDemo{
public Student(){
//构造方法内书写的内容
}
}
这个方法里面我们没有给参数,所以这就是一个无参的构造方法。(在构造方法里面我们可以做我们的一些操作)
构造方法的功能:主要是完成对象数据的初始化
代码演示:
/*
学生类
构造方法:
作用:创建对象
功能:完成对象数据的初始化
格式:
修饰符 类名(参数){
}
修饰符一边用public
*/
public class Student {
//1.首先给出两个成员变量用private修饰
private String name;
private int age;
//3.在他们之间写一个构造方法
public Student(){
System.out.println("无参构造方法");
}
//2.最后再给一个show方法
public void show(){
System.out.println(name + "," + age);
}
}
/*
测试类
*/
class StudentDemo {
public static void main(String[] args) {
//创建对象
Student s1 = new Student();//这个new后面的内容会调用无参构造方法
//给成员变量赋值
s1.show();
/*得到两个输出结果
无参构造方法
null,0
也就是我们调用Student();方法的时候他会执行Student类中的3.构造方法
接着调用show方法,我们没有给两个成员变量赋值所以会得到默认值。
*/
}
}
5.2构造方法注意事项
先到代码中演示:
/*
学生类
*/
public class Student {
//1.修饰两个变量
private String name;
private int age;
//3.无参数构造方法
// public Student(){
// System.out.println("无参数构造方法");
// }
//6..注释掉3的无参数构造方法我们来给一个有参数的构造法
public Student(String name){//10.通过这个构造方法创建一个对象
this.name = name;
}/*7.这样写测试类中的Student s = new Student();会报错,当然这个类中也会有报错,如果
我们在Student s = new Student();的括号里加上一个String类型的数据就不会报错了
*/
//9.无我们只需再给出一个参数构造方法即可
public Student(){}
//13.再创建一个带参数构造方法
public Student(int age){
this.age= age;
}
//16.再创建有多个参数的构造方法
public Student(String name,int age){
this.name = name;
this.age = age;
}
//2,定义一个show方法
public void show(){
System.out.println(name + "," + age);
}
}
/*
学生测试类
*/
class StudentDemo {
public static void main(String[] args) {
//4.public Student() 创建对象
Student s = new Student();
//5.调用show方法
s.show();// null,0
//4.如果没有写3.的代码也不会报错,因为系统会给出一个默认的无参构造方法
//8.如果我就想在这里Student s = new Student();使用无参数构造方法怎么办呢
//11.public Student(String name) 创建对象
Student s2 = new Student("林青霞");
//12.通过s2调用方法
s2.show();// 林青霞,0
//14.public Student(int age) 再来创建一个对象
Student s3 = new Student(30);
//15.通过s3调用对象
s3.show();// null,30
//17.public Student(String name,int age) 再创建一个对象
Student s4 = new Student("林青霞",30);
//18.通过s4调用对象
s4.show();// 林青霞,30
}
}
总结注意事项:
- 构造方法的创建:
如果没有定义构造方法,系统将给出一个默认的无参数构造方法
如果定义了构造方法,系统将不再提供默认的构造方法
- 构造方法重载:
如果自定义了带参构造方法,还要使用无参数构造方法,就必须再写一个无参数构造方法
- 推荐的使用方法:
无论是否使用,都建议手工书写无参数构造方法
(也就是说以后写构造方法的时候,带参的写不写先不管,但是无参的构造方法都尽量手动给出)
5.3标准类的制作
(重点理解!)
- 成员变量
都是用private修饰
- 构造方法
1.提供一个无参构造方法
2.提供一个带多个参数的构造方法
- 成员方法
1.提供每一个成员变量对应的setXxx()和getXxx()方法
2.提供一个显示对象信息的show();
- 在测试类中我们要创建对象并为成员对象赋值
- 而创建对象并未成员变量赋值有两种方式
1.无参构造方法创建对象后使用setXxx()方法赋值。
2.使用带参构造方法直接创建带有属性值的对象
代码演示:
/*
① 成员变量
都是用private修饰
② 构造方法
1.提供一个无参构造方法
2.提供一个带多个参数的构造方法
③ 成员方法
1.提供每一个成员变量对应的setXxx()和getXxx()方法
2.提供一个显示对象信息的show();
*/
public class Student1 {
//成员变量
private String name;
private double height;
//构造方法
public Student1() {
}
public Student1(String name, double height) {
this.name = name;
this.height = height;
}
//setXxx()/getXxx()方法(成员方法)
public void setName(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setHeight(double height) {
this.height = height;
}
public double getHeight() {
return height;
}
public void show() {
System.out.println(name + "," + height);
}
}
/*
④ 在测试类中我们要创建对象并为成员对象赋值
⑤ 而创建对象并未成员变量赋值有两种方式
1.无参构造方法创建对象后使用setXxx()方法赋值。
2.使用带参构造方法直接创建带有属性值的对象
*/
class StudentDemo1 {
public static void main(String[] args) {
//创建对象
Student1 s1 = new Student1();
//无参数方法使用set方法赋值
s1.setName("林青霞");
s1.setHeight(173.5);
//调用show方法
s1.show();
//创建对象
Student1 s2 = new Student1("林青霞", 183.74);
//调用show方法
s2.show();
}
}