构造方法就是与类同名的那个方法,它的作用是可以用来初始化
class Person{
public Person(String n,int a){ //构造方法
name = n;
age = a;
System.out.println(n+""+a);
}
private String name;
private int age;
public static void main(String[] args){
Person p = new Person("张三",14);//这就是作用
}
}
一.构造方法的定义声明
构造方法的名字必须和所在类的名字一致,没有返回值,但不能声明void,访问权限可以为任意
new一个对象的时候要用到构造函数,例如Hello hello = new Hello();这时调用的是Hello的无参数构造方法;Hello hello = new Hello("hi");这个是调用Hello有参数构造方法,在JAVA中如果不写构造方法的话,会默认加上一个无参数的构造方法,但是如果已经有了一个有参数的构造方法,那么无参数的构造方法就不会默认被加上.如果Hello类中已经有了一个有参数的构造方法,这时再使用 Hello hello = new Hello();来创建对象的时候就会出错,这就是为什么书上要强调写了有参数的构造方法就最好加一个无参数的构造方法,参数的不同的构造方法构成重载;
例:
class Fu
{
public Fu(){} //无参的公有构造方法
public Fu(int i){} //参数类型为int的公有构造方法
......
}
public class Demo extends Fu
{
public Demo(){} //无参的公有构造方法
public Demo(int i){} //参数类型为int的公有构造方法
public Demo(int i,double d){} //参数类型为int和double的公有构造方法
...
}
二.构造方法的使用
java中构造方法的使用有两个地方,一个是跟在关键字new后面,类名加上一个小括号(),小括号内根据实际加上实参,另外一个是跟在关键字super或this后加上一个小括号(),小括号内根据实际添加实参,下面进行举例。
例1:
Demo demo = new Demo(); //这里是调用的是一个无参的构造方法,必须声明在方法中,最好声明在主方法
上面构造方法的参数根据实际添加实参,jvm根据构造方法的参数不同加载不同的构造方法;
例2:
public Demo(){
this(2); //这里调用参数为int类型的本类的构造方法
}
例3:
public Demo(){
super(1); //调用参数为int类型的父类的构造方法
}
注意:例2和例3中this或super调用构造方法只能出现在构造方法中,而且必须出现在第一行,所以一个构造方法中第一行只能为this或super调用构造方法,两者不能同时调用构造方法出现,而且注意this或super调用构造方法时,要留构造方法出口,意思就是最后调用的构造方法中没有再调用别的构造方法!
三.构造方法的作用
1.为了初始化成员属性,而不是初始化对象,初始化对象是通过new关键字实现的
2.通过new调用构造方法初始化对象,编译时根据参数签名来检查构造函数,称为静态联编和编译多态
(参数签名:参数的类型,参数个数和参数顺序)
3.创建子类对象会调用父类构造方法但不会创建父类对象,只是调用父类构造方法初始化父类成员属性;
---------------------
作者:demo_h
来源:CSDN
原文:https://blog.csdn.net/u010785140/article/details/46963457
版权声明:本文为博主原创文章,转载请附上博文链接!