5、封装性
一、封装性的概念:
1、封装性就是面向对象思想的三大特征之一。
2、封装就是隐藏实现细节,仅对外提供访问接口。
封装有:属性的封装、方法的封装、类的封装、组建的封装、模块化的封装、系统的封装…
二、封装的好处:
1、模块化
2、信息隐藏
3、代码重用
4、插件化易于调试
5、具有安全性
封装缺点:会影响执行效率。
封装之前:
class Person
{
String name;
int age;
}
封装之后:
class Person
{
//属性是成员变量
private String name;
private int age;
//参数及方法内定义的变量是局部变量
public void setName(String name)
{
this.name = name;
}
public String getName()
{
return name;
}
}
封装性:如果属性没有封装,那么在本类之外创建对象后,可以直接访问
/**
封装性
如果属性没有封装,那么在本类之外创建对象后,可以直接访问属性
private关键字:访问权限修饰符,public表示共有的,private表示私有的。私有的属性或方法只能在
本类中访问,共有的属性或方法可以在本类外的其他类访问
*/
public class a
{
public static void main(String[] args)
{
Person p = new Person();
p.name = "牛逼";
p.age = 18;
}
}
//这里是对属性的封装
class Person
{
String name;
int age;
}
上面是对属性的封装,用在cmd中的javac运行不会出问题。但是在Person里面的属性都加上private关键字(private:私有)后,就变成了这个属性是私有的了。此时name和age只能在Person中访问
public class a
{
public static void main(String[] args)
{
Person p = new Person();
p.name = "牛逼";
p.age = 18;
}
}
//这里是对属性的封装
class Person
{
private String name;
private int age;
}
//这样加上private就会出错
想要在其他类中调用本类中私有属性,可以在本类中建立共有的方法来间接访问
//在一个类中,属性的都私有化,并对外提供getter and setter方法
public class a
{
public static void main(String[] args)
{
Person p = new Person();
p.setName("牛逼");
p.setAge(18);
}
}
//这里是对属性的封装
class Person
{
private String name;
private int age;
//下面为getter and setter
//对外提供一个为name属性设置的方法
public void setName(String name)//这边String name是一个参数,是要给上面private name赋值用的,与this.name = name;中后面的name相同
{
this.name = name;//前面的name就是上面String name中的name,对age相同
}
//对外提供一个获取name属性的方法
public String getName()
{
return name;
}
//对外提供一个为age属性设置的方法
public void setAge(int age)
{
this.age = age;
}
//对外提供一个获取age属性的方法
public int getAge()
{
return age;
}
}