构造方法

33 篇文章 0 订阅
普通格式:代码冗余
public class Stu {
	
	private int age;
	private String id;
	private String name;
	private String mobile;
	public static void main(String[] args) {
		Stu xiaoming=new Stu();
		xiaoming.age =10;
		xiaoming.id = "15462378";
		xiaoming.name="xiaoming";
		xiaoming.mobile="156237984";
		
		Stu xiaoqing=new Stu();
		xiaoqing.age =20;
		xiaoqing.id = "55462378";
		xiaoqing.name="xiaoqing";
		xiaoqing.mobile="154235984";
	}
}

 

为什么要构造方法?

Teacher类中有太多的属性,每次给属性赋值时非常麻烦:编码量大,无法重用给属性赋值的代码

构造方法

构造方法负责初始化类中的实例变量(非类变量)。构造方法是一种特殊的方法,这种方法必须满足以下语法规则构造方法必须与类名相同;不包含返回值类型描述部分。构造方法不能有static和final关键字修饰

 

public class Student {

	private int age;
	private String id;
	private String name;
	private String mobile;
	//构造方法
	/*快速创建构造函数  右键 source  选Generate Constructors using fields
	 * 可以创建 多个构造函数
	 * 构造函数之间的调用
	 */
	public Student(int age,String id,String name){
		this.age=age;
		this.id=id;
		this.name=name;
		
	}	
	public Student(  String name, String mobile) {
		super();
		/*
		 * 
		 * 
		 */		
		this.name = name;
		this.mobile = mobile;
	}
	public Student(int age,String id,String name,String mobile){
		
		this(age,id,name); //xuyao放在有效代码的第一行
		
		this.mobile=mobile;
	}//在普通方法中可以调用构造方法,但不能使用this 调用
	
	/*
	 * 一个构造方法只能调用本类中一个其他构造方法
	 */
	
	public static void main(String[] args) {

		Student xiaoming=new Student(30,"20152430123","xiaoming","13723719645");
		Student xiaoqing=new Student(30,"20152430123","xiaoming","13723719645");	
	}
}

 

如何使用构造方法:

使用new关键字调用构造方法,即构造方法在创建对象(也称对象实例化)时被调用。

 

public class TeacherTest{
        public static void main(String[] args){
               Teacher teacher = new Teacher();
        }
}

 //创建Teacher对象 由于Teacher类没有显式构造方法,这时Teacher类就会有一个默认的无参构造方法。

 

显式构造方法:

 

创建类时,如果没有显式定义构造方法,则该类会存在一个默认的无参构造方法;可以在类中声明一个或多个有参构造方法,但每个构造方法在参数个数或参数数据类型上要有所差别:

如果类中存在显式构造方法,则默认的无参构造方法将不复存在,除非显式定义无参构造方法:

类中可以有多个构造方法,构造方法之间可以通过this实现调用,但必须将调用构造函数代码写在有效代码的第一行:普通方法不能使用this调用类中构造方法

 

 

关键字this:

 

this代表对当前对象的一个引用。

this关键字用于调用属性、方法及本类中构造方法。

 

this在实例方法中通常被省略,除非实例方法中包含与成员变量同名的局部变量时,访问成员变量需要使用this。

public class Student {

	String name; //学生姓名

	public void doHomework() {
		System.out.println(this.name + “正在写作业……");
	}
}

 

 

对象初始化过程

用new创建并初始化对象步骤:
给对象的实例变量(非“常量”)分配内存空间,默认初始化成员变量;
成员变量声明时的初始化;
初始化块初始化(又称为构造代码块或非静态代码块);
构造方法初始化

 

蓝框框起的代码运行后,对象初始化过程如下图示:
    给对象的实例变量分配空间,默认初始化成员变量
    成员变量声明时的初始化
    初始化块初始化

    参构造方法初始化

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值