JAVA笔记之private、构造函数、this

* private:私有,权限修饰符;用于修饰类中的成员(成员变量,成员函数)。
 *将age私有化以后,类以外不能直接访问
 *所以得在类中提供访问age的方式
 *注意:私有仅仅是封装的一种表现形式
 *之所以对外提供访问方式,就因为可以在访问方式中加入逻辑判断等语句。
 *对访问的数据进行操作,提高代码的健壮性。
 */
package PersonDemo;
class Person
{
	private int age;
	//权限     返回值    函数名(){} 
	public void setAge(int a){
		if(a>0 && a<130)
		{
			age=a;	
			speak();
		}
		else
		{
			System.out.println("Error Data");
		}
	}
	
	public int getAge() {
		return age;
	}
	
	void speak(){
		System.out.println("age" + age);
	}
}

public class MyDemo {
	public static void main(String[] args)
	{
			Person p = new Person();
		
			p.setAge(-20);
			//p.speak(); 
	}
}
/*
 * 构造函数对象一建立就会调用与之对应的构造函数
 * 作用:可以给对象进行初始化
 * 
 *小细节:
 *当一个类中没有定义构造函数时,那么系统就会默认给该类加入一个空参数的构造函数。
 *当在类中自定义了构造函数,系统将不再构造。
 *
 *构造函数和一般函数在写法上不同。
 *在运行上也有不同
 *构造函数实在对象一建立就运行,给对象初始化。
 *而一般方法是对象调用才执行,给是对象添加对象具备的功能
 *
 *一般对象建立,构造函数只运行一次。
 *而一般方法可以杯该对象调用多次
 *
 *什么时候定义构造函数?
 *当分析事物是,该事务存在具备一些特性或者行为,那么将这些定义内容定义在构造函数
 */
package PersonDemo2;
class Person{
	private String name;
	private int age;
	/*
	 * 构造代码块
	 * 作用:给对象进行初始化
	 * 对象一建立就运行,而且优先于构造函数运行
	 * 和构造函数的区别:
	 * 是给所有对象进行统一初始化
	 * 构造函数是给对应的对象初始化
	 * 
	 */
	{
		//System.out.println("Person code run");
		cry();
	}
	
	Person()
	{
		System.out.println("A:name=" + name + ",age=" + age);
		//cry();
	}
	Person(String n)
	{
		name =n;
		System.out.println("B:name=" + name + ",age=" + age);
		//cry();
		
	}
	Person(String n, int a)
	{
		name = n;
		age = a;
		System.out.println("C:name=" + name + ",age=" + age);
		//cry();
	}
	
	public void setName(String n)
	{
		name = n;
	}
	public String getName()
	{
		return name;
	}
	public void cry(){
		System.out.println("Cry");
	}
}

public class PersonDemo2 {
	public static void main(String[] args)
	{
		Person p1 = new Person();
		
		Person p2 = new Person("lisi");
		p2.setName("libusi");
		System.out.println(p2.getName());
		
		//Person p2 = new Person("lisi");
		//Person p3 = new Person("wangwu", 10);
	}
}

/*
 * this:用于区分局部变量和成员变量同名的情况
 * 
 * this:代表哪一个?
 * 		this代表他所在函数所属对象的引用。
 * 哪个对象在调用,this就代表哪个。
 * 
 * this应用:当定义类中功能是,该函数内部需要调用该函数的对象是,这是用this来表示这个对象
 */

package PersonDemo3;

class Person{
	private String name;
	private int age;
	Person(int age)
	{
		this.age = age;
	}
	
	Person(String name)
	{
		this.name = name;
	}
	Person(String name, int age)
	{
		this.name = name;
		this.age = age;
	}
	public void speak()
	{
		System.out.println("name=" + this.name + ",age=" + this.age);
		this.show();
	}
	public void show()
	{
		System.out.println(this.name);
	}
	/*
	 * 需求:给人定义一个年龄是否相同的功能
	 */
	public boolean compareAge(Person p)
	{
		return this.age==p.age;
		/*if(this.age = p.age)
		{
			return true;
		}	
		else
		{
			return false;
		}*/
	}

}

public class PersonDemo3 {
	
	public static void main(String[] args)
	{
		Person p1 = new Person(30);
		Person p2 = new Person(25);
		boolean b = p1.compareAge(p2);
		System.out.println(b);
		//Person p = new Person("lisi");
		//Person p1 = new Person("zhangsan");
		//p1.speak();
	}

}
package PersonDemo;
/*
 * this语句:用于构造函数直接互相调用
 * 
 * 构造函数间调用要用this
 * 
 * this语句只能定义在函数的 第一行
 */
class Person
{
	private String name;
	private int age;
	
	Person(String name)
	{
		this.name = name;
	}
	
	Person(String name, int age)
	{
		//this();
		this(name); //this.name =name;  p(name);
		this.age = age;
	}
}

public class PersonDemo {

	public static void main(String[] args)
	{
		Person p =new Person("lisi", 30);
		Person p1 =new Person("lisi2", 36);
	}
}



你可能感兴趣的:(java,代码,this,构造函数,private)