🌈Java从入门到入坟⭐学习笔记⭐(三)封装性及四种权限修饰符详解😊(小白必备知识点!!!)

举报
Code皮皮虾 发表于 2021/08/18 19:05:37 2021/08/18
【摘要】 🌈Java从入门到入坟⭐学习笔记⭐(三)封装性及四种权限修饰符详解😊(小白必备知识点!!!)

Code皮皮虾 一个沙雕而又有趣的憨憨少年,和大多数小伙伴们一样喜欢听歌、游戏,当然除此之外还有写作的兴趣,emm…,日子还很长,让我们一起加油努力叭🌈

欢迎各位小伙伴们关注我的公众号:JavaCodes,名称虽带Java但涉及范围可不止Java领域噢😁,后台回复面试资料还能领取大厂面试真题、视频等等,期待您的关注❤


Java更新目录😁

🌈Java从入门到入坟⭐学习笔记⭐(一)String常用方法总结😊(小白必备知识点!!!)

🌈Java从入门到入坟⭐学习笔记⭐(二)final、static关键字总结😊(小白必备知识点!!!)

🌈Java从入门到入坟⭐学习笔记⭐(三)封装性及四种权限修饰符详解😊(小白必备知识点!)

封装概述

       封装(Encapsulation)是面向对象方法的重要原则,就是把对象的属性和操作(或服务)结合为一个独立的整体,并尽可能隐藏对象的内部实现细节。

封装的优点

  1. 良好的封装能够减少耦合。

  2. 类内部的结构可以自由修改。

  3. 可以对成员变量进行更精确的控制。

  4. 隐藏信息,实现细节。


封装性的使用

public class Main {

    public static void main(String[] args) {
        Student student = new Student();
        student.name="皮皮虾";
        student.age=20;
        
        student.show();
    	student.age=-5;
        student.show();
    }

}


class Student{
    String name;
    int age;

    public void show() {
        System.out.println("name:"+name+",age:"+age);
    }

}

在这里插入图片描述

上述代码表面上看没有什么问题,但在实际开发中对于属性肯定会有一些限制,例如:年龄不能为负数

==解决方法==

  • 提供getter和setter方法获取属性和给属性赋值,且在该方法中可以设置条件判断
  • 使用权限修饰符来注销掉原来的例如student.age=20; 这种赋值方法。
public class Main {

    public static void main(String[] args) {
        Student student = new Student();

        student.setAge(5);
        student.show();
        student.setAge(-2);
        student.show();
    }

}


class Student{
    private String name;
    private int age;

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
    	//条件判断
        if (age >= 0){
            this.age = age;
        }else {
            this.age = 0;
        }

    }

    public void show() {
        System.out.println("name:"+name+",age:"+age);
    }

}

在这里插入图片描述


封装的作用

  • 对象的数据封装特性彻底消除了传统结构方法中数据与操作分离所带来的种种问题,提高了程序的可复用性和可维护性,降低了程序员保持数据与操作内容的负担。
  • 对象的数据封装特性还可以把对象的私有数据和公共数据分离开,保护了私有数据,减少了可能的模块间干扰,达到降低程序复杂性、提高可控性的目的。

四种权限修饰符

      Java中,可以使用访问控制符来保护对变量方法构造方法的访问。Java 支持 4 种不同的访问权限。

  • default (即默认,什么也不写): 在同一包内可见,不使用任何修饰符。使用对象:类、接口、变量、方法。

  • private : 在同一类内可见。使用对象:变量、方法。 注意:不能修饰类(外部类)

  • public : 对所有类可见。使用对象:类、接口、变量、方法

  • protected : 对同一包内的类和所有子类可见。使用对象:变量、方法。 注意:不能修饰类(外部类)。

在这里插入图片描述

通过以下表来说明访问权限:

image.png

对于class的权限修饰符只可以用public和default(缺省)
public类可以在任意地方被访问
default类只可以被同一包内部的类访问


四种权限修饰符测试

在同一包下,创建Main类和test类

在这里插入图片描述

Main.java

public class Main {

    String defaultName;
    private String privateName;
    public String publicName;


    private void privateMethod() {
        defaultName = "1";
        privateName = "2";
        publicName = "3";
    }

    public void publicMethod() {
        defaultName = "1";
        privateName = "2";
        publicName = "3";
    }

     void defaultMethod() {
        defaultName = "1";
        privateName = "2";
        publicName = "3";
    }
}

test.java

在这里插入图片描述

在这里插入图片描述

在另一个包下就建立test02类

在这里插入图片描述

test02.java

在这里插入图片描述

在另一个包下,原先的私有结构、缺省声明的结构都无法使用。

在这里插入图片描述




最后

我是 Code皮皮虾,一个热爱分享知识的 皮皮虾爱好者,未来的日子里会不断更新出对大家有益的博文,期待大家的关注!!!

创作不易,如果这篇博文对各位有帮助,希望各位小伙伴可以==一键三连哦!==,感谢支持,我们下次再见~~~


一键三连.png

【版权声明】本文为华为云社区用户原创内容,未经允许不得转载,如需转载请自行联系原作者进行授权。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。