构造方法举例

例一:


package guozaofangfa;

public class User {
//系统默认的一个构造器
public User() {

}

//有参构造
public User(int i) {
System.out.println("带有int类型的构造器");
}

public User(String name) {
System.out.println("带有String类型的构造器");
}

public User(int i,String name) {
System.out.println("带有int,String类型的构造器");
}

}
//测试类
package guozaofangfa;

/**
*关于java类中的构造方法:
*1.构造方法又被称为构造函数/构造器/Constructor
*
*2.构造方法语法结构:
*[修饰符列表] 构造方法名 (形式参数列表) {
* 构造方法体;
* }
*
*3.回顾普通方法的语法结构:
*[修饰符列表]返回值类型方法名(形式参数列表) {
* 方法体;
* }
*
*4.对于构造方法来说,“返回值类型"不需要指定,并且也不能写void,
*只要写void,那么这个方法就成为普通方法了。
*
*5.对于构造方法来说,构造方法的方法名必须和类名保持- -致。
*
*6.构造方法的作用?
*构造方法存在的意义是,通过构造方法的调用,可以创建对象。
*
*7.构造方法应该怎么调用?
*普通方法是这样调用的:方法修饰符中有static的时候:类名.方法名(实参列表)、
*方法修饰符列表中没有static的时候:引用.方法名(实参列表)
*new构造方法名(实参列表)
*
* 8、构造方法调用执行之后,有返回值吗?
*每一个构造方法实际上执行结束之后都有返回值,但是这个“return值;”这样的语句不需要写。构造方法结束的时候java程序自动返回值。
*并且返回值类型是构造方法所在类的类型。由于构造方法的返回值类型就是类本身,所以返回值类型不需要编写。
*
*9、注释和取消注释: ctrl + /,多行注释: ctrl + shift + /
*10、当-个类中没有定义任何构造方法的话,系统默认给该类提供一个无参 数的构造方法,这个构造方法被称为缺省构造器。
*11、当一个类显示的将构造方法定义出来了,那么系统则不再默认为这个类提供缺省构造器。建议开发中手动的为当前类提供无参数构造方法
*12.构造方法支持重载机制。在一个类当中编写多 个构造方法,这多个构造方法显然已经构成方法重载机制。
*/

public class ConstructorTest01 {

public static void main(String[] args) {
//创建User对象
//调用User类的构造方法来完成对象的创建
//
User u1= new User();
User u2= new User(10);
User u3= new User("lisi");
User u4= new User(10,"lisi");

//调用带有static的方法:类名
ConstructorTest01.m();
//或者
m();
//调要没有static的方法:引用
//y方法在ConstructorTest01类中,所以要创建ConstructorTest01对象
//创建ConstructorTest01对象,调用无参数构造方法
ConstructorTest01 aa= new ConstructorTest01();//一个类中没有构造方法,系统默认提供一个无参构造器
aa.y();
}

public static void m() {
System.out.println("mm");
}
public void y() {
System.out.println("yy");
}

}

例二:


package guozaofangfa;

//类中元素过多时,想快速查看,Ctrl+o,输入要查找的元素名称,名称可以不全
public class Account {
//账号
private String acton;//实例变量或对象变量
//余额
private double balance;

//无参数构造器
public Account() {
//初始化实例变量的内存空间
//actno=null;
//balance=0.0;
}

public String getActon() {
return acton;
}
public void setActon(String acton) {
this.acton = acton;
}
public double getBalance() {
return balance;
}
public void setBalance(double balance) {
this.balance = balance;
}
}
//测试类
package guozaofangfa;

/**构造方法的作用:
*1.创建的对象;
*2.并初始化实例变量的内存空间
*成员变量之实例变量,属于对象级别的变量,这种变量必须先有对象才能有实例变量。
*实例变量没有手动赋值的时候,系统默认赋值,那么这个系统默认赋值是在什么时候完成的呢?是在类加载的时候吗?
*不是,因为类加载的时候只加载了代码片段,还没来得及创建对象。所以此时实例交量并没有初始化。
*实际上,实例变量的内存空间是在构造方法执行当中完成开辟的,完成初始化的。
*系统在默认赋值的时候,也是在构造方法执行过程当中完成赋值的。
*
*实例变量默认值:
*byte,short,int,long 0
*float,double 0.0
*bolean false
*引用数据类型 null
*/
public class ConstructorTest {

public static void main(String[] args) {

//查看访问的是那个方法,属性:按Ctrl,移动到要查看的元素上,出现下划线即可选择单击,实现寻找跳转
//创建对象
Account act1 =new Account();

System.out.println("账号:" + act1.getActon());
System.out.println("余额:" + act1.getBalance());
}

}

例三:


package guozaofangfa;

public class Customer {
private int no;
private String name;
private String birth;
//以下构造器都可以直接生成,右键Source--->Generate Constructor using Fields
/*
* //无参构造器
* public Customer() {
* super(); }
* //有参构造器
* public Customer(int no, String name, String birth) {
* super();
* this.no = no;
* this.name = name;
* this.birth = birth;
* }
*/
//无参
public Customer() {
}
//有参
public Customer(int a, String b, String c) {
no=a;
name=b;
birth=c;
}

public int getNo() {
return no;
}
public void setNo(int no) {
this.no = no;
}

public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}

public String getBirth() {
return birth;
}
public void setBirth(String birth) {
this.birth = birth;
}
}
//测试类
package guozaofangfa;

public class ConstructorTest02 {

public static void main(String[] args) {

Customer a1= new Customer();
System.out.println(a1.getNo());
System.out.println(a1.getName());
System.out.println(a1.getBirth());

Customer a2= new Customer(1234,"lisi","2002-12-23");
System.out.println(a2.getNo());
System.out.println(a2.getName());
System.out.println(a2.getBirth());

}

}