Java基础篇_封装

8 篇文章 0 订阅
订阅专栏

目录

一、封装

1.1 封装的概念

 1.2 访问限定符

1.3 软件包

1.3.1 包的概念

1.3.2 导入包中的类

1.3.3 自定义包 

二、static成员

2.1 static修饰成员变量

2.2 static修饰成员方法

三、代码块

总结


一、封装

1.1 封装的概念

面向对象程序三大特性:封装、继承、多态。而类和对象阶段,主要研究的就是封装。封装简单来说就是套壳屏蔽细节。举个例子,手机中都有主板,而产家不会直接将一个主板直接卖给用户,而会对手机进行外壳的包装,将内部实现细节隐藏起来,仅仅对外提供开关机、按键以及插孔等,让用户和手机屏幕、按键交互,实际上手机真正工作的是CPU、内存等元件。

封装:将数据和操作数据的方法进行有机结合,隐藏对象的属性和实现细节,仅对外公开接口来和对象进行交互。例如:被private修饰的成员变量或者方法,就只能在当前类中使用,其他类无法直接调用,但是我们可以通过Getter and Setter方法来间接调用,举个例子:

class Student {

    public String name;
    public int age;

    public Student(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public void eat() {
        System.out.println(this.name + "在吃饭");
    }
}

public class Demo {
    public static void main(String[] args) {
        Student student = new Student("小蓝",10);
        student.name = "小绿";
        student.eat();//小绿在吃饭
    }

}

上述代码中,可以成功获取到 student 类中的 name 和 eat(),输出“小绿在吃饭”,但若我们将 name 和 eat() 利用 private 封装,会发生什么呢?

我们发现,成员变量和方法被封装后,编译器就开始报错,说明我们无法直接获得 student 类中的 name 和 eat(),但是我们可以想办法间接获取,如上文所说,利用 Getter and Setter 方法:

class Student {

    private String name;
    public int age;

    public Student(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public void getEat() {
        eat();
    }

    private void eat() {
        System.out.println(this.name + "在吃饭");
    }
}

public class Demo {
    public static void main(String[] args) {
        Student student = new Student("小蓝",10);
        student.setName("小绿");
        System.out.println(student.getName());//小绿
        student.getEat();//小绿在吃饭
    }

}

这样子我们就成功解决无法直接调用问题,此外,Getter and Setter 方法我们还可以让编译器帮我们实现成员变量的 Get 和 Set 方法, 使用快捷键 Alt+Insert 或点击鼠标右键如下:

注:如上图,也可以单独选择 Getter 或者 Setter 方法。

 1.2 访问限定符

Java 中主要通过类和访问权限来实现封装:类可以将数据以及封装数据的方法结合在一起,更符合人类对事物的认知,而访问权限用来控制方法或者字段能否直接在类外使用。Java 中提供了四种访问限定符:

这四种访问限定符中 public 可以理解为公共电话,谁都可以用;default 可以理解为家门口的密码,家里人 (同一个包中) 知道,别人不能知道;private 是只有自己可以用,其他人都不可以用; protected 主要是用在继承中,子类继承父类后,利用 super() 来访问。

注:成员变量没有访问限定符修饰的话,默认为 default 。

1.3 软件包

1.3.1 包的概念

在面向对象体系中,提出了一个软件包的概念,即:为了更好的管理类,把多个类收集在一起成为一组,称为软件包。有点类似于目录。比如:为了更好的管理电脑中的歌曲,一种好的方式就是将相同属性的歌曲放在相同文件下,也可以对某个文件夹下的音乐进行更详细的分类。

1.3.2 导入包中的类

Java 中已经提供了很多现成的类供我们使用。例如Date类:可以使用 java.util.Date 导入 java.util 这个包中的 Date类,如下:

public class Test {
public static void main(String[] args) {
        java.util.Date date = new java.util.Date();
        System.out.println(date.getTime());
    }
}

上述的导入比较麻烦,我们还可以使用import语句导入包,如下:

import java.util.Date;

public class Test {
    public static void main(String[] args) {
        Date date = new Date();
        System.out.println(date.getTime());
    }
}

注:若我们还想使用 java.util 中的其他类,可以使用 import java.util.* 。

1.3.3 自定义包 

在Java中也引入了包,包是对类、接口等的封装机制的体现,是一种对类或者接口等的很好的组织方式,比如:一个包中的类不想被其他包中的类使用。包还有一个重要的作用:在同一个工程中允许存在相同名称的类,只要处在不同的包中即可。那我们该如何建包呢?如下图:

注:包的名称一般使用域名的倒置,包即是文件夹。


二、static成员

2.1 static修饰成员变量

static修饰的成员变量,称为静态成员变量,静态成员变量最大的特性:不属于某个具体的对象,是所有对象所都具有

【静态成员变量特性】

1、不属于某个具体的对象,是类的属性,所有对象共享的,不存储在某个对象的空间中。

2、推荐通过类名访问,用对象访问也可以,但是不推荐。

3、被 static 修饰后,该静态成员变量的值存储在方法区当中。

4、生命周期伴随类的一生 (即:随类的加载而创建,随类的卸载而销毁)。

类的成员变量有2种:

1、静态成员变量

(1)属于类,不属于对象,只有一份。

(2)类名 + 点号来访问静态成员变量才是合理的,对象来访问不合理。

(3)不依赖对象。

2、非静态成员变量

(1)属于对象,每实例化一个对象,都会有一个对应的非静态成员变量,每个对象都有。

(2)对象的引用 + 点号来访问。

(3)依赖对象。

2.2 static修饰成员方法

Java 中,被 static 修饰的成员方法称为静态成员方法,是类的方法,不是某个对象所特有的静态成员一般是通过静态方法来访问的。静态方法中不能访问任何非静态成员变量,也不能直接调用任何非静态方法,例如:

上图中成员变量 name 和方法 sleep() 都无法成功编译,就是因为 name 和 sleep()都是非静态的,若我们加上 static 修饰,就可以成功编译,如下:

【静态方法特性】  

1. 不属于某个具体的对象,是类方法。

2. 可以通过对象调用,也可以通过类名.静态方法名(...)方式调用,更推荐使用后者。

3. 不能在静态方法中访问任何非静态成员变量。

4. 静态方法中不能调用任何非静态方法,因为非静态方法有this参数,在静态方法中调用时候无法传递this引用。


三、代码块

1、普通代码块

普通代码块是直接使用 {} 定义在方法中的代码块,不需要条件,永远都会被执行,很少使用。

2、构造代码块        

构造代码块是使用 {} 定义在类中的代码块(不加修饰符),也叫实例代码块构造代码块一般用于初始化实例成员变量

3、静态代码块

使用 static{} 定义的代码块称为静态代码块。一般用于初始化静态成员变量。

【代码块特性】

1、静态代码块是最先被执行的,其次是实例代码块,最后是构造方法。

2、静态代码块不管生成多少个对象,其只会执行一次。

3、静态成员变量是类的属性,因此是在JVM加载类时开辟空间并初始化的。

4、如果一个类中包含多个静态代码块,在编译代码时,编译器会按照定义的先后次序依次执行 (合并) 。

5、实例代码块只有在创建对象时才会执行。

注:合并意思是最后一次定义的值就是该变量的值。


总结

1、成员变量没有访问限定符修饰的话,默认为 default。

2、静态成员变量随类的加载而创建,随类的卸载而销毁。

3、this 不能出现在静态方法中。

4、不能在静态方法中访问任何非静态成员变量。

5、使用 {} 定义的一段代码称为代码块。

6、java.util 是 java 提供的工具程序包,可以用 import java.util.* 导入。

7、静态代码块是最先被执行的,其次是实例代码块,最后是构造方法。

Java 中的封装
_山鬼谣_的博客
09-24 382
在之前的学习中,我们已经探讨了面向对象编程(OOP)的核心思想,以及类和对象的基本概念。这些概念是现代软件应用程序构建的基石。然而,更进一步的理解需要我们深入研究面向对象编程的三大关键特性,即封装继承和多态。这些这些特性不仅仅是理论概念,它们是实际编写高质量、可维护和可扩展代码的关键。在本期,我们将重点介绍封装这一重要特性。封装(Encapsulation)是面向对象编程(OOP)的一个核心概念,它指的是将数据(成员变量/属性)和操作数据的方法(成员方法)封装在一个单元内部的能力。数据隐藏。
JAVA_封装性例子
08-16
一个详细讲解JAVA_封装性的例子 希望可以帮助到你。
Java基础语法之封装
最新发布
code2cat的博客
08-07 1277
使用访问修饰符控制属性和方法的访问权限,保护对象的内部状态。通过Getter和Setter方法访问和修改私有属性,可以增加对属性值的验证,提高代码的安全性。封装可以隐藏实现细节,提高代码的可维护性和模块化。封装Java面向对象编程中重要的基础概念。通过掌握访问修饰符、Getter和Setter方法以及封装的意义,可以编写出更加安全、可维护和模块化的代码。在接下来的文章中,我们将进入下一个阶段,更加深入的理解Java这门神奇的语言,敬请期待!
Java 封装
weixin_30847271的博客
08-17 191
在面向对象程式设计方法中,封装(英语:Encapsulation)是指一种将抽象性函式接口的实现细节部份包装、隐藏起来的方法。 封装可以被认为是一个保护屏障,防止该类的代码和数据被外部类定义的代码随机访问。 要访问该类的代码和数据,必须通过严格的接口控制。 封装最主要的功能在于我们能修改自己的实现代码,而不用修改那些调用我们代码的程序片段。 适当的封装可以让程式码更容易...
Java封装
qi341500的博客
07-26 311
1、面对对象设计的基本步骤 2、使用类图描述面向对象设计 3、绘制类图工具 4、构造方法 5、static 修饰符 6、static修饰符总结 7、封装 1、封装的好处 2、封装的具体步骤 3、封装时会用到多个权限修饰符来修饰成员变量和方法
java基础教程.zip_Java编程_Java__Java编程_Java_
08-09
"Java基础教程"针对初学者,旨在提供全面的Java入门知识。以下是对教程内容的详细概述: 1. **Java简介**:Java是由Sun Microsystems(现为Oracle Corporation)于1995年发布的,它的设计目标是“一次编写,...
java_shopping.rar_Java web 商城_java Myshopping_java web_shopping_
09-20
文章将深入探讨一个基于Java的网上商城Web项目——MyShopping,旨在为开发者提供一个学习和参考的实例。 首先,我们要理解Java Web的基础架构。Java Web应用通常由Servlet、JSP(JavaServer Pages)、JDBC...
Java_go_over.rar_Go_ Go_ Go!_java go over_javaover
09-21
1. **基础**:Java开发环境的搭建,如JDK的安装与配置,IDE的使用(可能是Eclipse或IntelliJ IDEA)。 2. **语法**:基本数据类型、运算符、流程控制语句(if, switch, for, while)、方法、类与对象、封装、...
Java基础_第二阶段-day18每日作业卷答案1
08-08
Java基础】BeanUtils工具类详解 在Java开发中,BeanUtils工具类是Apache Commons库中的一个组件,它提供了一种方便的方式来操作JavaBean的属性,简化了对象属性的设置和获取。本将深入讲解BeanUtils工具类的...
java 封装
王者之峰
04-10 8090
1.封装简介概念 将类的某些信息隐藏在类的内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的访问和操作。 好处 a.只能通过规定的方法访问数据。 b.隐藏类的实例细节,方便修改和实现。 为啥要对java的类进行封装? 个人认为当做一个项目的时候里面的类很多,打个比方一个大公司部门很多,老板不是每个员工都认识,但是“各部门
Java中的封装
z972065491的博客
09-19 8478
Java中的封装
java封装
weixin_45090657的博客
08-18 87
1.封装的概述 是面向对象的三大特征之一(封装,继承,多态) 是面向对象编程语言对客观世界的模拟,客观世界里成员变 量都是隐藏在对象内部的,外界无法直接操作的、 2.封装原则 将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过该类提供的方法对隐藏信息的操作和访问,如将成员变量用private进行修饰,提供对应的setXxx()/getXxx方法 3.封装的好处 通过方法来控制成员变量的操作,提供了代码的安全性 把代码用方法进行封装,提高了代码的复用性。 (运用封装,这样每次我们使用的时候,只需
写文章

热门文章

  • 数据结构_Map和Set 1523
  • HTML&CSS 1494
  • Java基础篇_数组 1152
  • 数据结构_排序 1130
  • Java基础篇_抽象类和接口 1078

分类专栏

  • 网络原理 3篇
  • MySQL 5篇
  • JavaEE 3篇
  • 数据结构 9篇
  • JavaSE 8篇

最新评论

  • JavaScript

    Kwan的解忧杂货铺@新空间代码工作室: 你的文章总是让我拓展了视野,增长了见识,每篇博文都是知识的瑰宝,我真的很喜欢你的风格,感谢你的专业分享。期待你的下一次精彩分享。

  • TCP/IP_TCP协议

    普通网友: 大佬高质量文章,图文并茂,逻辑清晰,受益匪浅,期待大佬新作。【我也写了一些相关领域的文章,希望能够得到博主的指导,共同进步!】

  • Java多线程 (案例)

    CSDN-Ada助手: 不知道 Java 技能树是否可以帮到你:https://edu.csdn.net/skill/java?utm_source=AI_act_java

  • 数据结构_链表

    CSDN-Ada助手: 恭喜您完成第12篇博客《数据结构_链表》!继续保持创作的热情和努力,您对数据结构的理解与分享将会受益更多读者。下一步,或许可以考虑深入探讨链表的应用场景或者与其他数据结构的对比分析,以丰富您的内容,期待您更多精彩的文章!愿您在创作道路上不断进步,谢谢您的分享!

  • 数据结构_时间与空间复杂度

    CSDN-Ada助手: 恭喜你发布了第9篇博客,标题为“数据结构_时间与空间复杂度”!这是一个非常重要的主题,对于理解数据结构和算法的基本原理至关重要。希望你能继续保持创作的热情和努力,不断提升自己的写作水平和深度。下一步,建议你可以尝试结合实际案例或者编程实践,来更加生动地解释时间与空间复杂度的概念,这样读者也会更容易理解和接受。加油!期待你更多精彩的文章!

最新文章

  • JavaScript
  • HTML&CSS
  • TCP/IP_IP协议简介
2024年25篇
2023年6篇

目录

目录

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

玻璃钢生产厂家聊城玻璃钢雕塑制作嘉峪关卡通玻璃钢雕塑设计商场秋季美陈创意双牌玻璃钢造型雕塑河北通道商场美陈价格西宁玻璃钢雕塑厂家批发吕梁卡通玻璃钢雕塑甘南人物玻璃钢雕塑邯郸抽象玻璃钢雕塑厂家大头儿子玻璃钢雕塑广东玻璃钢马雕塑设计与制作白云区玻璃钢雕塑定做电话安康玻璃钢牌匾雕塑乌鲁木齐气球商场美陈费用情况新密抽象玻璃钢雕塑皋兰玻璃钢雕塑生产厂家开远市玻璃钢雕塑公司工艺品玻璃钢雕塑黑龙江景观玻璃钢雕塑销售厂家白菜玻璃钢雕塑哪家好深圳周年庆典商场美陈供应2022年大型商场新年美陈玻璃钢球鞋造型雕塑湘西玻璃钢花盆镇江玻璃钢人物雕塑定制价格复古花盆玻璃钢花盆组合南通百货商场美陈工业玻璃钢花盆厂家直销富阳区玻璃钢雕塑方案哈尔滨玻璃钢雕塑灯价格香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声单亲妈妈陷入热恋 14岁儿子报警汪小菲曝离婚始末遭遇山火的松茸之乡雅江山火三名扑火人员牺牲系谣言何赛飞追着代拍打萧美琴窜访捷克 外交部回应卫健委通报少年有偿捐血浆16次猝死手机成瘾是影响睡眠质量重要因素高校汽车撞人致3死16伤 司机系学生315晚会后胖东来又人满为患了小米汽车超级工厂正式揭幕中国拥有亿元资产的家庭达13.3万户周杰伦一审败诉网易男孩8年未见母亲被告知被遗忘许家印被限制高消费饲养员用铁锨驱打大熊猫被辞退男子被猫抓伤后确诊“猫抓病”特朗普无法缴纳4.54亿美元罚金倪萍分享减重40斤方法联合利华开始重组张家界的山上“长”满了韩国人?张立群任西安交通大学校长杨倩无缘巴黎奥运“重生之我在北大当嫡校长”黑马情侣提车了专访95后高颜值猪保姆考生莫言也上北大硕士复试名单了网友洛杉矶偶遇贾玲专家建议不必谈骨泥色变沉迷短剧的人就像掉进了杀猪盘奥巴马现身唐宁街 黑色着装引猜测七年后宇文玥被薅头发捞上岸事业单位女子向同事水杯投不明物质凯特王妃现身!外出购物视频曝光河南驻马店通报西平中学跳楼事件王树国卸任西安交大校长 师生送别恒大被罚41.75亿到底怎么缴男子被流浪猫绊倒 投喂者赔24万房客欠租失踪 房东直发愁西双版纳热带植物园回应蜉蝣大爆发钱人豪晒法院裁定实锤抄袭外国人感慨凌晨的中国很安全胖东来员工每周单休无小长假白宫:哈马斯三号人物被杀测试车高速逃费 小米:已补缴老人退休金被冒领16年 金额超20万

玻璃钢生产厂家 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化