个人技术分享

        我们知道,面向对象有三大特性,分别是:封装,继承,多态。

        今天我们主要说说封装:


一:封装:

 (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天学完的基础知识,到现在才学到封装,路还很远,我要低头赶路了。