您的位置:首页 > 编程语言 > Java开发

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

2015-08-31 23:10 537 查看
* 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);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: