java中的构造器

构造器的语法格式的详细说明如下:
修饰符: 修饰符可以省略,也可以是public,protected,private其中之一
构造器名:构造器名必须和类名相同
形参列表:和定义方法形参列表的格式完全相同
指的指出的是,构造器不能定义返回值类型声明,也不能声明void定义构造器没有返回值,
如果为构造器定义了返回值类型,或者使用了void定义构造器没有返回值,编译时不会出错
但java会把这个所谓的构造器当做方法来处理
package July30th;
public class Person {
public int age;
public String name;
public void say(String content)
{
System.out.println(content);
}
}
类也是一种引用数据类型,因此程序中定义的Person类型的变量实际上是一个引用,他被
存放在栈内存中,它指向实际的Person对象,而真正的Person对象则存放在堆内存中

栈内存里的引用变量并未真正存储对象里的属性数据,对象的属性数据实际存放在堆内存里
而引用型变量仅仅只是指向该堆内存的对象,从这个角度来看,引用型的变量跟C语言中的
指针很像,他们都是存储一个地址,通过这个地址来引用到实际对象。
当一个对象被创建成功以后,这个对象将保存在堆内存中,java程序中不允许直接访问堆内存
中的对象,只能通过该对象的引用操作该对象。

堆内存中的对象可以有多个引用,即多个引用变量指向同一个对象

如果希望通知垃圾回收机制回收某个对象,只需要切断该对象的所有引用变量和他之前的关系即可
也即是把这些应用变量赋值为null即可

通常建议为Java类保留无参数的默认构造器,因此,如果为一个类编写了有参数的构造器,通常
建议为该类额外编写一个无参数的构造器。
因为构造器主要用于被其他方法调用,用以返回该类的实例,因而通常把构造器设置成public
访问权限,从而允许系统中任何位置的类来创建该类的对象,除非在一些极端的情况下,我们需要
限制创建该类的对象,可以把构造器设置成其他访问权限,例如protected主要用于被其子类
来调用。

package learn_20150803;

public class ConstructorOverload {
	private String name;
	private int count;
	public ConstructorOverload()
	{
		
	}
	public ConstructorOverload(String name,int count)
	{
		this.name = name;
		this.count = count;
	}
	public static void main(String[] args) {
		ConstructorOverload oc1 = new ConstructorOverload();
		ConstructorOverload oc2 = new ConstructorOverload("hello world", 18000);
		System.out.println(oc1.count+" "+oc1.name);
		System.out.println(oc2.count+" "+oc2.name);

	}

}

构造器B里完全包含了构造器A,对于这种完全包含的情况,如果是两个方法之间存在这种关系,
则可以在方法B中调用方法A,但构造器不能直接被调用,构造器必须使用new关键字来调用,
但一旦使用new关键字来调用构造器,又会导致系统重新创建一个一个对象,为了在构造器B中
调用构造器A中的初始化代码,又不会重新创建一个Java对象,可以使用this关键字来调用相应
的构造器

package learn_20150803;

public class Apple {
	private String name;
	private String color;
	private double weight;
	public Apple()
	{
		
	}
	public Apple(String name,String color)
	{
		this.name = name;
		this.color = color;
	}
	public Apple(String name,String color,double weight)
	{
		this(name,color);//通过this关键字调用另一个重载的构造器的初始化代码
		this.weight = weight;
	}
	

}

使用this调用另一个重载的构造器只能在构造器中使用,而且必须作为构造器执行体的第一条语句,
使用this调用重载的构造器时,系统会根据this后括号里的实参来调用形参列表与对应的构造器

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值