封装:是指隐藏对象的属性和实现细节,仅对外提供公共访问方式。
好处:
• 将变化隔离。
• 便于使用。
• 提高重用性。
• 提高安全性。
封装原则:
• 将不需要对外提供的内容都隐藏起来。
• 把属性都隐藏,提供公共方法对其访问。
private(私有)关键字
private关键字:
• 是一个权限修饰符。
• 用于修饰成员(成员变量和成员函数)
• 被私有化的成员只在本类中有效。
常用之一:
• 将成员变量私有化,对外提供对应的set ,get 方法对其进行访问。提高 对数据访问的安全性。
类中怎么没有定义主函数呢?
注意:主函数的存在,仅为该类是否需要独立运行,如果不需要,主函数是不用定义的。
主函数的解释:保证所在类的独立运行,是程序的入口,被jvm调用
例子:
class Animal{
//定义private变量,只允许Animal类访问
private int legs;
//定义public类型set和get方法,允许外部类访问
public void setLegs(int legNum){ //设置legs属性
if(legNum!=0 && legNum!=2 && legNum!= 4){
System.out.println("哇哦!这个动物腿的数量很不同啊。");
return;
}
legs = legNum;
}
public int getLegs(){ //获取legs属性
return legs;
}
//eat方法
public void eat(String food){
System.out.println("这个动物吃" + food);
}
}
class Dog{
public static void main(String args[]){
Animal a1 = new Animal();
a1.setLegs(4); //正确赋值方式
//a1.legs = 4; 错误赋值方式,legs为private权限
System.out.println("狗有" + a1.getLegs() + "条腿");
a1.eat("骨头");
}
}
set和get方法只是封装性的一个体现(隐藏属性),并不能完全代表Java面向对象的封装性。
封装性还可以体现在方法上,只需对方法加上权限(private),使得方法只能在当前类中使用,不对外暴露私有方法
封装性的体现是多样的,不只是体现在某一种使用上
private的含义
private是一个权限修饰符,代表最小权限。
可以修饰成员变量和成员方法。
被private修饰后的成员变量和成员方法,只在本类中才能访问。
private的使用格式
private 数据类型 变量名 ;
使用 private 修饰成员变量,代码如下:
提供【getXxx】方法 /【setXxx】方法,可以访问成员变量,代码如下
对于基本类型中的boolean值,Getter方法要一定写成isXxx的形式;而setXxx规则不变
提供【getXxx】方法 /【setXxx】方法,可以访问成员变量,代码如下
对于基本类型中的boolean值,Getter方法要一定写成isXxx的形式;而setXxx规则不变