/*
封装:
表现:
1,函数就是一个最基本封装体。
2,类其实也是一个封装体。
从以上两点得出结论:
好处:
1,提高了代码的复用性。
2,隐藏了实现细节,还要对外提供可以访问的方式。便于调用者的使用。这是核心之一,也可以理解为就是封装的概念。
3,提高了安全性。
它也是面向对象思想的特征之一。
共有三个特征:封装,继承,多态。
举例:机箱。隐藏了办卡设备的细节,对外提供了插口以及开关等访问内部细节的方式。
*/
//描述人。Person
//属性:年龄。
//行为:说话:说出自己的年龄。
/*
总结:
类中不需要对外提供的内容都私有化,包括属性和行为。
selectSort(int[] arr)
{
swap(
}
bubbleSort(int[] arr)
{
swap(
}
private swap(int[] arr,int a,int b)
{
}
重点:以后再描述事物,属性都私有化,并提供setXxx getXxx方法对其进行访问。
*/
class Person
{
//属性:
private int age;//age就是被修饰为了private私有。也就是被隐藏了。这就是封装的一种体现。
//行为:
void speak()
{
System.out.println("age="+age);
}
/*
年龄已被私有,错误的值无法赋值,可是正确的值也赋值不了,不行。
咋办,按照之前所学习的封装的原理,隐藏后,还需要提供访问方式。
通过方法的方式,让其他程序访问到,就可以了。更重要的是可以在方法中加入逻辑判断。
记住:对变量的访问操作有两个动作:赋值(设置 set),取值(获取 get)
所以,对私有的变量访问的方式就是 set变量 get变量--> setAge getAge
*/
//定义对age赋值的方法。
void setAge(int a)
{
//加入逻辑判断。
if(a>0 && a<130)
age = a;
else
// System.out.println("对不起,您的年龄数值 "+a+" 是非法的。");
// throw new RuntimeException("对不起,您的年龄数值 "+a+" 是非法的。");//异常!一旦出现,程序结束。需要修正代码。
}
//定义一个获取age值的方法。
int getAge()
{
return age;
}
}
class PersonDemo
{
public static void main(String[] args)
{
//测试Person.class。
//创建对象。
Person p = new Person();
/*
赋值-20是可以的,因为age属性是int类型,但是确不符合现实生活中的事物。
怎么解决这个问题呢?
不让它访问就哦了。怎么在代码上实现呢?需要使用一个Java中的关键字也是一个修饰符 private(私有,权限修饰符)
记住:私有仅仅是封装的体现形式而已。
*/
// p.age = -20;//age不能在person类以外的程序中直接访问了。
//演示对age设置和获取方法的体现。
p.setAge(-20);
int a = p.getAge();
System.out.println("a="+a);
// p.speak();
}
}
|
|