前言
在 Java 中,封装是一种重要的面向对象编程特性。下面对封装性的简单介绍
一、封装的概念
1.封装思想的引入
在 C 语言中,结构体变量是一种将不同类型的数据组合在一起的数据类型,它可以用来表示复杂的数据结构。这就是一种封装的思想,将多个变量封装成一个新的“数据类型”。通过结构体变量名和成员运算符(.)来访问结构体的成员。
struct 结构体名 {
成员类型1 成员名1;
成员类型2 成员名2;
...
成员类型n 成员名n;
};
类的概念与之类似,与之不同的是,类不仅可以将变量进行封装还可以将函数进行封装。
2.类的定义
书本定义:类是抽象出一类事物共有的属性和行为,并用一定的语法格式来描述所抽象出的属性和行为。
这里的属性代表变量(后续称为成员变量),行为代表函数(后续也会称之为方法)
因此类体由两部分构成:
1.变量的声明:用来存储属性的值(体现对象的属性)
2.方法的定义:方法可以对类中声明的变量进行操作,即给出算法(体现对象所具有的行为功能)
3.代码举例
此处我们定义了一个梯形类(Ladder),它的成员变量有above(上底)、 bottom(下底)、 height(高)、 area(面积),它的方法有computerArea()、setHeight()。
class Ladder {
float above; //梯形的上底(变量声明)
float bottom; //梯形的下底(变量声明)
float height; //梯形的高(变量声明)
float area;
//梯形的面积(变量声明)
float computerArea() {
//计算面积(方法)
area = (above+bottom)*height/2.0f;
return area;
}
void setHeight(float h) {
height = h;
}
//修改高(方法)
}
二、类的使用
1.对象的创建
类是面向对象语言中最重要的一种数据类型,那么就可以用它来声
明变量。在面向对象语言中,用类声明的变量被称作对象。
创建一个对象包括对象的声明和为对象分配变量两个步骤。
1.1对象的声明
一般格式为: 类的名字 对象名字;
Ladder ladder;
1.2为声明的对象分配变量
使用new运算符和类的构造方法为声明的对象分配变量,并返回一个引用值给
对象名称。
构造方法可以理解为,在创建对象的同时,给成员变量初值的过程,默认所有类都有一个无参构造方法。构造方法是一个特殊的方法,其方法名和类名一致,且无返回值
class Ladder {
float above; //梯形的上底(变量声明)
float bottom; //梯形的下底(变量声明)
float height; //梯形的高(变量声明)
float area;
//默认的构造方法,可以省略
Ladder(){
};
//梯形的面积(变量声明)
float computerArea() {
//计算面积(方法)
area = (above+bottom)*height/2.0f;
return area;
}
void setHeight(float h) {
height = h;
}
//修改高(方法)
}
上述将默认的构造方法已写出
Ladder ladder = new Ladder();
此处即创建了一个名为ladder的对象。
2.使用对象
通过(.)运算符可以访问成员变量或方法
class Ladder {
float above; //梯形的上底(变量声明)
float bottom; //梯形的下底(变量声明)
float height; //梯形的高(变量声明)
float area;
//默认的构造方法,可以省略
Ladder(){
};
Ladder(float above, float bottom) {
this.above = above;
this.bottom = bottom;
}
//梯形的面积(变量声明)
float computerArea() {
//计算面积(方法)
area = (above+bottom)*height/2.0f;
return area;
}
void setHeight(float h) {
height = h;
}
//修改高(方法)
}
public class Test {
public static void main(String[] args) {
Ladder ladder = new Ladder(10,20);
ladder.setHeight(10);
System.out.println("梯形的信息如下");
System.out.println("above = "+ladder.above);
System.out.println("bottom = "+ladder.bottom);
System.out.println("height = "+ladder.height);
System.out.println("area = "+ladder.computerArea());
}
}
上述代码定义了一个新的构造方法,初始化了above 和 bottom
三.封装的意义
1.将数据和操作数据的方法封装在一起,使得代码的结构更加清晰,易于理解和维护。
2.当需要对类的内部实现进行修改或扩展时,可以在不影响外部代码的情况下进行,提高了代码的可扩展性。
3.增强了数据的安全性,防止外部代码意外修改或破坏类的内部数据。
总结
本次以封装思想为主,主要介绍封装的思想,只是初步介绍了类的使用。