我们知道,面向对象有三大特性,分别是:封装,继承,多态。
今天我们主要说说封装:
一:封装:
(1)含义:
将一些信息隐藏起来,不对外展示,拿来直接使用就行;
(2)体现:
(1)方法就是一种封装;
(2)private 也是一种封装;
(3)举例:
下面我们来举一个例子来形象地了解一下:
输出打印一个数组的最大值:
import java.util.Scanner;
public class Extend {
public static void main(String[] args) {
PutMax();
}
//定义一个方法
public static void PutMax(){
Scanner scn=new Scanner(System.in);
int[] array=new int[5]; //动态初始化
System.out.println("请输入一串个数不大于五的数字:");
for(int a=0;a<array.length;a++){ //循环输入
array[a]=scn.nextInt();
}
int s=array[0];
for(int a=0;a<array.length;a++){ //遍历比较
if(s<=array[a]){
s=array[a];
}
}
System.out.println(s); //输出最大值
}
}
将方法隐藏之后,类似于封装,需要使用我们直接调用即可,不用关心他的内部信息:

二:好处
我们还是通过一个例子进行说明以及理解:
我们创建了一个对象 c ,去调用一个ClassPeople 类,输出打印它的年龄,结果不符合常理,但是我们无法对此进行限制 :
public class people {
public static void main(String[] args) {
ClassPeopele c=new ClassPeopele();
c.age=-20;
c.name="刘备备";
c.eat();
System.out.println(c.name+"\t"+c.age);
}
}
C:\Java\jdk-17.0.11\bin\java.exe "-javaagent:C:\Program Files\JetBrains\IntelliJ IDEA 2022.1.3\lib\idea_rt.jar=7389:C:\Program Files\JetBrains\IntelliJ IDEA 2022.1.3\bin" -Dfile.encoding=UTF-8 -classpath C:\Test\classDemo\out\production\classDemo people
吃饭从来都是趴着!!
刘备备 -20
进程已结束,退出代码0
我们可以将类的权限修饰符 public 改为 private 进行封装,将需要修饰的 age 进行限制:
public class ClassPeopele {
public String name;
public String sex;
private int age; //修改权限修饰符
public String eat(){
System.out.println("吃饭从来都是趴着!!");
return "李白";
}
}
此时,它的 age 属性出现了错误,这是因为我们 修改了权限修饰符,我们就不能直接调用 age;

我们必须间接调用,必须使用两个方法才能间接调用:

由此,我们知道使用 private 修饰,可以对 该信息进行限制,防止不合理的数据出现,间接调用,又增强了代码的 安全性 ;
三:应用
我们定义一个 student 类,描述它的属性方法,创建一个对象,进行调用;
public class ClassStudent {
//成员变量:姓名,性别,年龄
//成员方法:学习,当傻子子
private String name;
private String sex;
private int age;
public void setName(String str){
name=str;
}
public String getName(){
return name;
}
public void setSex(String str){
sex=str;
}
public String getSex(){
return sex;
}
public void setAge(int num){
if(num>0&&num<100) age=num;
else System.out.println("数据输入错误");
}
public int getAge(){
return age;
}
public void study(){
System.out.println("好好学习,天天向上");
}
public void silly(){
System.out.println("往那一坐和傻子一样");
}
}
创建对象,调用:
public class Student {
public static void main(String[] args) {
ClassStudent c=new ClassStudent();
c.setSex("男");
c.setName("牛顿顿");
c.setAge(99);
System.out.println(c.getName()+"\t"+
c.getAge()+"\t"+c.getSex());
}
}
C:\Java\jdk-17.0.11\bin\java.exe "-javaagent:C:\Program Files\JetBrains\IntelliJ IDEA 2022.1.3\lib\idea_rt.jar=11314:C:\Program Files\JetBrains\IntelliJ IDEA 2022.1.3\bin" -Dfile.encoding=UTF-8 -classpath C:\Test\classDemo\out\production\classDemo Student
牛顿顿 99 男
进程已结束,退出代码0
好了,今天就到这里吧,原计划20天学完的基础知识,到现在才学到封装,路还很远,我要低头赶路了。