Java中的封装是一种重要的面向对象编程(OOP)概念,它允许将数据和方法封装在一个类中,以保护数据不被外部直接访问和修改,同时通过公共的方法提供对数据的访问和操作。既实现了数据的安全,又能够更好地对数据进行操作。让代码结构易于解释和理解,同时还能提供多种方案(封装不同的方法和属性)来适应不同的需求。既提高了开发效率也提高了代码的质量。
Java中的封装是通过访问修饰符来实现的。访问修饰符有public、private、protected和default(没有修饰符)。
public表示公共的,可以被任何类访问;
private表示私有的,只能在当前类中访问;
protected表示受保护的,只能在当前类和子类中访问;
default表示默认的,只能在同一个包中访问。
封装类可以包含数据成员和方法成员,数据成员可以是任意类型的变量,方法成员可以是任意类型的方法,包括构造方法和静态方法。封装类的数据成员和方法成员可以通过访问修饰符来控制其访问级别。
封装流程:
1.私有化成员变量,使用private关键字修饰.
2.提供公有的get成员方法和set成员方法,在方法体中来进行合理判断.
3.在构造方法中调用set成员方法进行合理的判断
例如,以下是一个简单的封装类的例子:
package //封装第一个实例;
class Student
{
//属性
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通过间接的访问,修改私有的sex
System.out.println("sex = "+stu1.getsex());
//方法的封装
stu1.setage(30);//我真实年龄30岁
stu1.introduce();
//我骗他我18岁
System.out.println("Fage = "+stu1.getage());
}
}
封装类的优点在于可以提高程序的安全性和可维护性,避免了外部直接访问私有属性和方法,使得程序更加安全可靠;同时也提高了程序的可维护性,封装类的改变不会影响到外部程序的调用方式,提高了程序的可扩展性。