目录
- 封装的概念
- 1.信息隐藏
- 2.属性封装
- 3.方法封装
- 封装的实例
- 运行结果
- 总结
封装的概念
将东西包在一起,然后以新的完整形式呈现出来,将方法和字段一起包装到一个单元中,单元以类的形式实现
信息隐藏,隐藏对象的实现细节,不让外部直接访问到
将数据和方法包装进类中,加上具体实现的隐藏(访问修饰符),共同被称作封装,其结果是一个同时带有特征和行为的数据类型
“定义类,定义其属性、方法的过程称为封装类”
1.信息隐藏
信息隐藏是OOP最重要的功能之一,也是使用访问修饰符的原因
信息隐藏的原因包括:
对模块的任何实现细节所作的更改不会影响使用该模块的代码,防止用户意外修改数据,使模块易于维护和使用(就是电脑配件)
2.属性封装
修改属性的可见性来限制对属性的访问。
为每个属性创建一对赋值方法(setter)和取值(getter)方法,用于公开对这些属性的访问接口在setter和getter方法中,根据需要加入对属性操作的限制
3.方法封装
目的:
隐藏方法实现细节(方法体),向外部提供公开接口(方法头),以供安全调用简化调用,方便修改维护
根据需要,可以私有化方法,以供内部使用—帮助方法helper
封装的实例
package 封装第一个实例;class Student//有点像C语言的结构体,前面的struct变成了class
{//属性int age;private int Fage;String name;//字符串double score;private int sex;//方法//属性封装void setsex(int finalsex){sex = finalsex;}public int getsex(){return sex;}//方法封装private void myage(int myage) {Fage = myage;}public int getage(){myage(18);//当别人问我年龄的时候,我就告诉他我18,不是30岁return Fage;}public void setage(int realage) {Fage = realage;}//输出void introduce() {//对这个类里面的成员变量访问不需要进行参数的传递,而C语言需要System.out.println("name="+name+",age="+age+",Fage="+Fage+",score="+score+",sex ="+sex);}void testFunc() {System.out.println("testFunc");}
}//和C的结构体不同,这里不需要;public class Test {public static void main(String[] args) {//struct Student *stu1;//stu1 = malloc(sizeof(struct Student));Student stu1 = new Student();//实例化一个对象//类不能直接使用,不能直接访问变量,需要先实例化,需要申请一个空间//Student stu1 = null;stu1.age = 18;stu1.setsex(18);stu1.name = "Niko";stu1.score = 3.14;stu1.setsex(1);//Student类里面的sex是私有的,不能访问。//通过间接访问给sex赋值,private可以在同一个类调用//类的使用stu1.introduce();//调用类中的方法stu1.testFunc();//属性的封装//通过setsex,getsex通过间接的访问,修改私有的sexSystem.out.println("sex = "+stu1.getsex());//方法的封装stu1.setage(30);//我真实年龄30岁stu1.introduce();//我骗他我18岁System.out.println("Fage = "+stu1.getage());}
}
运行结果
name=Niko,age=18,Fage=0,score=3.14,sex =1
testFunc
sex = 1
name=Niko,age=18,Fage=30,score=3.14,sex =1
Fage = 18
总结
基本全写在实例里面了~~
不给类申请一个空间的话会报错(如下图),这错误和C语言的段错误类似