------- android培训、java培训、期待与您交流! ----------
如何进行封装?
封装的举例:
class Person
{
int age;
void speak()
{
System.out.println("age = " + age);
}
}
class PersonDemo
{
public static void main(String[] args)
{
Person p = new Person();
p.age = -20;//这种情况不符合现实逻辑情况,出现这种情况的原因是该成员被直接访问,造成了安全隐患
p.speak();
}
}
由于上面的代码这样做造成了安全隐患,由此,将age成员进行封装,不让外部进行访问,
代码如下:
class Person
{
private int age;//这时,外部就不能能访问,所以需要提供访问方式
void speak()
{
System.out.println("age = " + age);
}
}
class PersonDemo
{
public static void main(String[] args)
{
Person p = new Person();
p.age = -20;//当代码读到这里时就会报错,因为外部是么有办法访问到这个成员的
p.speak();
}
}
将age私有化以后,类以外建立了对象也不能够直接访问,但是,人应该有年龄,那么就需要实在Person 类中提供公共访问方式。
代码如下:
class Person
{
private int age;
public void setAge(int a)
{
age = a;
}
public int getAge()
{
return age;
}
void speak()
{
System.out.println("age = " + age);
}
}
class PersonDemo
{
public static void main(String[] args)
{
Person p = new Person();
p.age (20);
p.speak();
}
}
一个成员通常会对应两个访问方式(设置、获取) 注:封装不是私有,私有仅仅是封装的一种表现形式
之所以对外提供公共访问方式是因为可以控制用户传递的数据。
就象下面这段代码
class Person
{
private int age;
public void setAge(int a)//单纯遮掩的封装并不能保证age依然处于正常的现实年龄值之内,所以,需要进行判断
{
if (a > 0 && a < 130)
age = a;
}
public int getAge()
{
return age;
}
void speak()
{
System.out.println("age = " + age);
}
}
class PersonDemo
{
public static void main(String[] args)
{
Person p = new Person();
p.age (20);
p.speak();
}
}