20200310java学习之路之构造函数

一:构造函数

  1. 构建创造对象时调用的函数,对对象进行初始化
  2. 创建对象都必须通过构造函数进行初始化
  3. 一个类中如果没有构造函数,那么该类中就会有默认的空参数构造函数
  4. 如果该类中定义了指定的构造函数,那么该类中的空参数构造函数就会消失
  5. 构造函数是有return语句的,但是通常是void中,所以省略不写
class TestPersonDemo2{
	public static void main(String [] args){
	Person p=new Person();
	p.speak();
	Person p1=new Person("旺柴");

	p1.setName("旺旺");//改名字
	p1.speak();

	Person p2=new Person("小强",10);
	p2.speak();

	}
	public void setName(String n){
	name=n; 
	}
	
}

二:一般函数和构造函数的区别

  1. 构造函数
    -对象创建时,就会调用与之对应的构造函数,对对象进行初始化
    -对象创建时只会被调用一次
  2. 一般函数
    -对象创建后,只有需要函数功能的时候才会被调用
    -对象创建后可以调用无数次
class Person{
	private String name ;
	private int age;	

//dingyigouzaohanshu
Person (){
	name="baby";
	age=1;
	System.out.println("person run ");
}
Person(String n){
	name =n;
}
public void speak (){
	System.out.println(name+":"+age);
}
}
class TestPersonDemo{
	public static void main(String [] args){
		Person p=new Person();
		p.speak();
		Person p1=new Person();
		p1.speak();
	}
} 

在这里插入图片描述

三:什么时候定义构造函数

  1. 在描述该事物时,该事物已经存在具备一些内容,并定义在构造函数中
  2. 构造函数可以有多个,用于不同的对象进行针对性的初始化
  3. 多个函数可以以在类中重载的形式体现
class Person{
	String name;
	int age;
	Person(){
		this.name=name;
	}
	Person(){
		this(name);
		this.age=age;
	}
	public void speak(){
		System.out.println(name+":"+age);
	}
	public boolean compare(Person p){
		/*if(this.age==p.age)
			return true;
		else
			return false;
		*/
			return this.age==p.age;
	}
}
class TestPersonCompare{
	public static void main(String [] args){
		Person p1=new Person("zz"+18);
		p.speak();
		Person p2=new Person("zzz"+17);
		p2.speak();
	}
}

四:构造函数的关键字this

  1. 当成员变量与局部变量重名时,可以用关键字this来区分
  2. this代表对象(当前的对象)
  3. this就是所在函数所属对象的引用(简单来说-:哪个对象调用this所在函数,this就代表当前哪个对象)
  4. this可以用于构造函数中调用其他的构造函数(只能定义在构造函数的第一行,因为初始化的动作先执行
class Person{
	private String name;
	private int age;

	Person(String name ){
		this.name=name;
	}
	Person(String name,int age){
		this(name);
		this.age=age;
	}

	public void speak(){
		System.out.println(this.name+":"+this.age);
	}
}
class TestPersonThis {
	public static void main(String [] args){
		Person p=new Person("小铭"+18);
		p.speak();
		Person p2=new Person("小虹");
		p2.speak();
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值