Java(构造方法)

构造方法

构造方法(构造函数)
构造方法是一种特殊的方法。


作用:

  1. 构造出来一个类的实例。
  2. 对构造出来的一个类的实例(对象)初始化.

特征:

  1. 与所存在的类同名
  2. 无返回类型(void也没有)

特殊性:

  1. 类中必定有构造方法。
  2. 如果没有写构造方法,系统自动添加一个无参构造方法。如果是数值类型初始化为0,如果是布尔类型,初始化为false
  3. 构造方法在初始化(new)对象时自动执行,一般不能显式地直接调用.
  4. 接口不允许被实例化,所以接口中没有构造方法。
  5. 不能被static、final、synchronized、abstract和native修饰。

构造方法和其他方法一样也可以重载。

class A//一个名为A的类
{
	private int a1;//定义一个私有的未初始化的a1变量
	public int a2;//定义一个共有的未初始化的a2变量

	public A()//这是一个构造方法,方法名要和类名一样。而且不能有返回类型(无void)。
	{
		a1=1;
		a2=2;
	}
	public void show()//一个show方法用来显示变量   //这是个普通方法。
	{
		System.out.printf("a1=%d,a2=%d",a1,a2);
		System.out.printf("\n");
	}
}
class B
{
	int b;//没有给b赋值

	//这个类没有写构造方法,系统会自动添加一个无参的构造方法.
	
}
class B1
{
	int b1;//没有给b1赋值

	B1()
	{
		//我写了一个构造方法,但是没有写内容,系统会给类中的变量赋默认值。
	}	
}
class C
{
	int c;
	public C(int m)//写了一个带参数的构造方法  
	{
		c=m;
	}
}
class D //演示构造方法重载
{
	int d1;
	int d2;
	public D()
	{
		d1=1;
		d2=11;
	}
	public D(int m)//构造方法重载
	{
		d1=m;
		// d2=m;
	}
	public D(int m,int n)//构造方法重载
	{
		d1=m;
		d2=n;
	}
	void show()
	{
		System.out.printf("d1=%d,d2=%d\n",d1,d2);
	}
}
public class Test1
{
	public static void main(String args[])
	{
		A aa = new A();//创建一个以A类为模板的aa对象,并调用构造方法A()
		aa.show();//a1=1,a2=2   //我没有调用A函数,它却自动执行了。说明构造方法在创建对象的时候执行。
		// aa.a1=2;
		//这里会出错,因为aa中的a1是私有的,其他类不能访问它。
		//所以不能给它赋值,也不能直接输出它,只能通过调用A中的show方法,才能输出它。
		
		B bb = new B();
		System.out.println("b="+bb.b);//b=0
		//我没有给b初始化,b的值为0 //说明系统自动增添一个构造方法
		
		B1 bb1 = new B1();
		System.out.println("b1="+bb1.b1);//b1=0;
		//没有给b1初始化,b1的值为0 //系统会把默认值赋给变量
		
		//C cc = new C();//这里会出错,因为你写了构造方法,系统不会自动帮你增加构造方法了
					 //你的参数又跟你写的构造方法不一样,所以会出错会显示你没有初始化变量。
		C cc = new C(1);//成功调用构造方法C(int m) 把1赋值给了m
		System.out.println("c="+cc.c);//c=1; 

		D dd1 = new D();//D后面没有参数,所以调用无参的构造方法
		dd1.show();//d1=1,d2=11;

		D dd2 = new D(2);//D后面有一个参数,调用有一个参数的构造方法
		dd2.show();//d1=2,d2=0;
					//d2没有赋值,系统给它赋默认值0。
		D dd3 = new D(3,4);//调用两个参数的构造方法
		dd3.show();	//d1=3,d2=4;
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值