构造方法给的概念
在之前我们使用过方法,在调用的方法的时候需要在方法名称之后加上小括号,括号里面可以传递实参,那么我们在创建一个对象的时候使用的是【new类名()】的方法去实现,其实上这也是一种方法,但是这个方法我们没有明确的去定义,那为什么可以调用呢?
public class Hello {
public static void main(String[] args) {
//创建一个学生对象
Student s=new Student();
System.out.println(s);
}
}
【Student()】就是一个方法,是一个特殊的方法-构造方法,发现了构造方法的名称和类名一样,而且一定在new关键字之后调用。但是我们没有在Student类中看到这个方法依然能够调用,原因是JVM系统默认为该类提供了无参数构造方法,所以我们才能调用。
没有定义依然能调用,JVM(java虚拟机)为该类提供了无参数构造方法。
显示的定义构造方法
public class Student {
private String name;
private int age;
private double height;
//显示的定义构造方法
public Student() {
System.out.println("调用了无参数的构造方法");
}
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 double getHeight() {
return height;
}
public void setHeight(double height) {
this.height = height;
}
}
此时定义了构造方法显示了无参数构造方法
构造方法是在什么时候调用的呢?如何很明显的看出调用了构造方法?
public class Hello {
public static void main(String[] args) {
//创建一个学生对象
Student s=new Student();
System.out.println(s);
}
}
调用了无参数的构造方法
com.bai.demo.Student@15db9742
构造方法是在创建对象(实例化对象的时候调用的)
面试题
请说明构造方法和普通方法的区别
构造方法:
1.名称和类名称一致
2.没有返回值
3.在使用new关键字实例化对象的时候调用(后面还可以使用反射创建对象)
普通方法:
1.普通方法的名称也可以和类名称相同,但是一般不会这样做
2.需要指定返回值的类型(如果是void表示不需要方法体要发回内容)
3.需要先实例化对象之后使用【对象名.方法名()】或者【类名.方法名()】的方式调用。
总结:
1.构造方法的概念(构造方法的出现是为了在实例化对象的时候可以为对象的属性初始化值)
2.无参构造方法 默认jvm会为每个类提供一个无参数构造方法
3.构造方法的特征和它与普通方法的区别要清楚