构造方法:
简化main程序的一种方法
构造方法无法被[修饰词]fina,static修饰,属于非静态代码块的一种,主要作用是用来简化mian程序从而降低计算机内存存储空间的占用;没有返回值。
package sir;
public class User {
int age;
String name ;
String adress;
User(int a,String b,String c){
age=a;
name=b;
adress=c;
}
User(int a,String b){
this(a);
name=b;
}
User(int a){
age=a;
}
User(int a){
this(a,null,null);
}
public static void main(String[] args) {
User qq=new User(60,"lala", "haha");
System.out.println(qq.age);
System.out.println(qq.name);
//因为任何构造方法都属于非静态代码块,故不能使用“类名.方法名()”的格式对方法或者元素进行调用
}
}
在同一个类中可定义多个构造方法,这些构造方法属于重载(方法名相同,参数列表不同,参数列表的不同体现在参数类型不同,参数数量不同),不同的构造方法可以根据this()相互调用,此时this()必须在有效代码的第一行。少的也可以调用多的,但必须在参数列表中输入剩余参数的默认值。
构造方法也有无参构造方法:
package apple;
public class Student {
Student() {
System.out.println("hahaha");
}
public static void main(String[] args) {
new Student();
}
}
在非静态代码块格式为:类名(){ }
在main方法中的格式为:new.类名();
的结构对构造方法进行调用。这一结构要与静态代码块在main方法中调用的格式:类名.方法名();区分开。
若定义一个类时,没有定义有参构造方法,则系统默认定义了一个无参构造方法,并隐藏,若新定义一个有参构造方法后,之前隐藏的无参构造方法被系统抹去。
package apple;
public class Person {
int age;
String name;
public Person() {
}//public Person(){ }就是系统自动隐藏的无参构造方法;
public static void main(String[] args) {
Person x=new Person();
System.out.println(x.age);
}
}
若此时新定义一个有参构造方法,则默认的无参构造方法消失。
package apple;
public class Person {
int age;
String name;
public Person(int 1,String a) {
System.out.println("啦啦啦");
}//此时默认的无参构造方法被抹除,若需要无参构造方法,则必须重新定义;
public static void main(String[] args) {
Person x=new Person();
System.out.println(x.age);
}
}