关于封装,构造函数,this关键字
私有仅仅是封装的一种体现形式,凡是私有的都可以算封装。
//setAge(),和getAge()方法,其中对Person()类中age进行封装
class Demo19
{
public static void main(String[] args)
{
Person a1=new Person();
a1.setAge(0);//设置年龄
a1.run();
}
}class Person
{
private int age;//age私有,进行封装
public void setAge(int a)
{
if(a>0&&a<130)
this.age=a;
else
System.out.println("年龄非法");
}
public int getAge()
{
return this.age;
} public void run()
{
System.out.println("年龄="+this.age);
}
}
---------------------------
构造函数
将构造函数私有化,这样其他程序就无法创建该类的对象了。
例如:将功能类的构造函数私有化,功能方法静态修饰
类中的方法是静态就不需要创建对象了,所以本类中就可以将构造函数私有化private
1.构造函数和类名相同,不用定义返回值,没有具体的返回值
2.每一个对象是个实体,实体用构造函数进行初始化后才可以使用
3.任何类都有默认的构造函数
4.对象一创建就调用构造函数,一般函数只有对象创建完成后,所需时才会被调用
5.构造函数只能被执行一次,一般函数可以执行多次
6.描述事物时候一开始就存在的属性和行为,那么就用构造函数定义
class Demo20
{
public static void main(String[] args)
{
// Person 明确要创建Person类的对象
// new是开辟空间的关键字.
// ()需要通过哪个构造函数进行初始化。
Person p=new Person();
p.speak();
}
}
class Person
{
//指定构造函数后没有系统默认的构造函数,如果不指定就有系统默认的构造函数Person(){}
Person()
{
/**
if(……)
return……
*/
System.out.println("person run");
//构造函数中也有return语句,用来控制结束初始化
}
public void speak()
{
System.out.println("speak");
}
}
-------------------------
//多个构造函数,多个初始化
//一般函数调用可以用this.函数()
//构造函数之间的调用可以使用this(指定具体实参明确要调用的构造函数)
class Demo20
{
public static void main(String[] args)
{
Person p=new Person("lisi");
p.information();
Person p1=new Person("wangwu",20);
p1.information();
Person p2=new Person("zhangsan",20);
p2.information();
System.out.println(p2.compareAge(p1));
}
}
class Person
{
private String name;
private int age;
//构造函数
//当一个类中存在着多个构造函数时候,
//他们的存在形态是重载 Person()
{
System.out.println("person run");
}
Person(String name)
{
//构造函数调用,不能用this.被调用函数();
this();
this.name=name;
//可用this(name);
}
Person(String name,int age)
{
this.name=name;
this.age=age;
}
public void setName(String name)
{
this.name=name;
}
public String getName()
{
return this.name;
}
public void information()
{
System.out.println(name+":"+age);
}
public void show()
{
//用this调用information()函数
this.information();
}
//和任意一个Person对象比较其中的年龄
public boolean compareAge(Person p)
{
return p.age==this.age;
}
}