封装
- 指隐藏对象的属性和实现细节,仅对外提供公共访问方式
- 好处:
将变化隔离
便于使用
提高重用性
提高安全性 - 封装原则
将不需要对提供的内容隐藏起来。
将属性隐藏,提供公共方法对其访问
私有
private static void A()
权限修饰符,用于修饰类中的成员(成员变量,成员函数),只在本类中有限。
图中所示的大概思路是:
* 定义两个类,一个类1内定义一个private的变量age,另一个类2实现修改变量age;
* 类1中,封装了age的判定,图中表示将判断传入数据a是否大于零或者小于130,若符合则通过,将传入数据赋给age。然后调用speak()函数,将age打印出来,若不符合则打印出”false age”
* 同时在类1中,定义一个getAge()函数,用于返回age;
* 类2中为主函数,new一个类2的函数定义为p;有一个注释为p.age(-20)这样并不可行
class private2
{
private int age;
void speak()
{
System.out.println("age="+age);//打印该值
}
void setage(int a)
/* 之前这里添加一个public static void setage(int a ) 出现了bug,提示为无法从静态上下文中引用非静态方法 用static修饰的方法称为静态方法,修饰变量则为静态变量,又分别叫类方法或者类变量。 静态方法中不能直接调用非静态方法,下面代码我调用了speak()这个非静态的方法,所以报错。 只要不是static修饰的方法,必须要通过对象进行引用。 在非静态方法里,可能忽略了(this)。在静态的方法里,看看有没有你这个方法所在类的对象。 */
{
if (a>0&&a<120)
{
age=a;//若符合将age给a
speak();//并打印
}
else
System.out.println("false");
}
public int getage()
{
return age;//返回一个年龄
}
}
class demo
{
public static void main(String[] args)
{
private2 p=new private2();
p.setage(-40);
}
}