构造函数 或称之为 构造器
Buck bu=new Buck();
new Buck(); 只要被 new 构造函数必然会被调用(实例化对象的过程)
public class Buck(){
public Buck(){
//这是构造函数
}
}
构造函数的名称必须于类名相同, 并且没有返回类型, 反之方法有返回类型即使是被void声明它也还是Method, 也可以设为public或private或不声明存取权即为默认default 。
它(构造函数)是在赋值一个引用对象前就会被调用执行; 构造函数不被继承; 构造函数可以有多个, 有参为有参构造函数, 无参为无参构造函数; 平常我们在编写程序时即便不去创建构造器, Java编译器还是会隐式的创建一个无参的构造器, 但是只要是创建了构造器不管几个哪怕是一个, Java编译器都不会去创建; 创建构造器时建议创建构造器就创建两个也可以更多, 一个有参一个无参(构造器), 如果一个类有一个以上的构造函数, 这代表它们也是重载(什么是重载), 假设调用有参
Music(int music){}//有参构造器
构造器,那构造器Music(int music)创建对象时
Music m = new Music(5);//实例化一个 m 对象
就会覆盖掉其他的构造器; 刚才说了构造器可以有多个, 但参数一定能不一样, 也包括顺序与类型顺序也不能一样, 编译器看的是参数的类型与顺序, 哦对还有个数。
public A(String name,int ext){}
public A(String name,int ext){
//这样写是有冲突的
//不能同一个class中出现两个一模一样的
}
public A(String name,int ext,String gender){
//这是可以的
}
public A(int ext,String name){
//这也没毛病
}
A(){
//同样可以
}
那么构造器有什么用那:
某种对象不应该在状态被初始化之前就调用(实例变量未被赋值. 什么是实例变量?), 就别让任何人在没有初始化的情况下取得该对象(只给该对象声明一个或多个有参构造函数); 假设在B class中调用A的实例成员 OR Method, 那么就必须实例化一个A的对象,
A a = new A();//实例化一个对象
但A中实例变量只是声明没有赋值, 假设A中的Method需要到的实例变量, 但是没有给它值, 也就无法使用了, 但是可以在构造函数中对实例变量赋值, 然后初始化对象时必须传入实参(记得关注有几个形参)
A a=new A("嘿嘿",19);
若有错误,还望留言指教 您的指点是我不断提升的基石