Java三大特性的第一个分水岭——封装性
大家好,我是卷心菜,大二学生一枚,本篇主要讲解Java面向对象的三大特征之一:封装性。如果您看完文章有所收获,可以三连支持博主哦~,嘻嘻。
文章目录
- 一、设计思想
- 二、权限修饰符
- 三、作用范围
- 四、使用细节
- 五、代码举例
一、设计思想
封装性的思想
:以类为载体,将类的属性、行为(可以理解为Java中的方法)封装起来,对使用者隐藏其具体实现细节,只对外公开简单的接口。大白话就是说,该隐藏的隐藏,该暴露的暴露。封装性的目的
:便于外界调用,避免外部操作对类内部数据的影响,从而提高系统的可扩展性、可维护性。
二、权限修饰符
Java中有四种权限修饰符,作用范围从小到大依次是:
- private
- 缺省(就是什么都不写)
- protected
- public
用代码体现就是:
public class One {private int age;String name;protected String major;public char gender = '男';
}
三、作用范围
刚刚讲过了,这四种权限修饰符有不同的作用范围,那么它们的作用范围到底是什么呢?
修饰符 | 类内部 | 同一个包 | 不同包的子类 | 同一个工程 |
---|---|---|---|---|
private | YES | |||
缺省 | YES | YES | ||
protected | YES | YES | YES | |
public | YES | YES | YES | YES |
四、使用细节
4种权限可以用来修饰类及类的内部结构:
属性、方法、构造器、内部类
注意:修饰类的话,只能使用:缺省、public,不然就会出现编译型异常
总结封装性:Java提供了4种权限修饰符来修饰类及类的内部结构,体现类及类的内部结构在被调用时的可见性的大小。
五、代码举例
编写一个类,有四个成员变量,其中一个权限修饰符为public,其余都是private,都有对应的getter()和setter():
public class One {private int age = 20;private String name = "cabbage";private String major = "计算机科学与技术";public char gender = '男';public int getAge() {return age;}public void setAge(int age) {this.age = age;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getMajor() {return major;}public void setMajor(String major) {this.major = major;}public char getGender() {return gender;}public void setGender(char gender) {this.gender = gender;}
}
最后写一个测试类:
public class TestDemo {public static void main(String[] args) {One one = new One();one.gender = '女';one.setAge(21);one.setName("hello");one.setMajor("大数据");System.out.println(one.gender);System.out.println(one.getAge());System.out.println(one.getName());System.out.println(one.getMajor());}
}
运行结果:
从代码和运行结果可以看出,属性gender权限修饰符作用范围最大,在测试中,可以直接通过"对象.方法"
来改变属性值,这样就不符合封装性的思想,破坏了封装性;其它的三个属性值的改变,都是通过setter()和getter()来修改的,确保了封装性思想的落实:隐藏该隐藏的。
通过将属性声明为私有的private,再提供共有的public方法setter()和getter()来实现对属性的操作。来实现以下的目的:
- 隐藏类中不需要对外提供的实施细节
- 用户只需要通过实现定制好的方法访问数据,可以方便的加入控制逻辑,限制对属性的不合理操作
- 便于修改,增强代码的可维护性
谢谢阅读,一起进步,嘻嘻~
Java三大特性的第一个分水岭——封装性相关推荐
- java三大特性:封装、继承、多态
2019独角兽企业重金招聘Python工程师标准>>> 至今记得若干年前,去面试排了半天的队,到我的时候,面试官问我的第一个问题,java三大特性是什么~我支支吾吾的没有答全~0.0 ...
- Java继承_Hachi君浅聊Java三大特性之 封装 继承 多态
Hello,大家好~我是你们的Hachi君,一个来自某学院的资深java小白.最近利用暑假的时间,修得满腔java语言学习心得.今天小宇宙终于要爆发了,决定在知乎上来一场根本停不下来的Hachi君个人 ...
- Java三大特性(封装、继承、多态)详细讲解
文章目录 封装 1 封装的好处 2 简单实现 继承 一.类继承简单实现 父类:动物类 子类 猫类 狗类 二.类继承的详细讲解 1. 类继承中成员变量的访问 1.1 成员变量之间的访问 (变量不重名的情 ...
- java 三大特性理解_java 三大特性--封装、继承和多态理解
java 三大特性--封装.继承和多态理解 封装 /** * 所谓封装,就是将对象具有的成员变量和成员函数包装和隐藏起来,让外界无法直接使用, * 被封装的成员只能通过某些特定的方式才能访问. * 实 ...
- java三大特性 继承_java基础(二)-----java的三大特性之继承
在<Think in java>中有这样一句话:复用代码是Java众多引人注目的功能之一.但要想成为极具革命性的语言,仅仅能够复制代码并对加以改变是不够的,它还必须能够做更多的事情.在这句 ...
- Java提高篇 —— Java三大特性之继承
一.前言 在<Think in java>中有这样一句话:复用代码是Java众多引人注目的功能之一.但要想成为极具革命性的语言,仅仅能够复制代码并对加以改变是不够的,它还必须能够做更多的事 ...
- java三大特性、五大原则
java三大特性 1.封装 隐藏类的属性和功能实现,增强类的安全性和简化编程,通过提供公用接口,以特定的访问权限来使用类成员. 2.继承 对共有的特性和行为进行抽取,形成父类,继承就是子类继承父类的特 ...
- Educoder–Java高级特性(第一章)- IO流【笔记+参考代码】
Educoder–Java高级特性(第一章)- IO流[笔记+参考代码] 第一关 1.下列关于字节和字符的说法正确的是(BC) A.字节 = 字符 + 编码 B.字符 = 字节 + 编码 C.字节 = ...
- java面向对象的特征封装_Java总结-Java面向对象的基本特征之一:封装性
作者:nyist-tc-岑国玉 来源:牛客网 Java面向对象的基本特征之一:封装性 封装性: 1.封装性的目的:保护某些属性和方法不被外部所看见. //这里说一下自己学linux时老师教我这个封装类 ...
- Java三大特性:封装,继承与多态
(尊重劳动成果,转载请注明出处:https://blog.csdn.net/qq_25827845/article/details/84592274冷血之心的博客) 目录 (一)封装 封装的定义 封装 ...
最新文章
- Google与Binomial合作开源Basis Universal GPU纹理编解码器
- 聊一聊mongodb中的 explain 和 hint
- (76)FPGA随机函数($dist_uniform)
- 《A Practical Guide to Continuous Delivery》作者访谈录
- 根据用户查进程_Linux进程之如何查看进程详情?
- Redis 常见的性能问题和解决方法
- 网络工程师还要学linux吗,网络工程师要学什么
- win10(win8)上安装miniTool后出现请手动安装fastboot驱动问题
- C++派生类与继承(超详细)
- SpringBoot版本升级
- ipad部分截屏方法
- 创维YS代工E900V21E/TY1608-S905l3B-8822CS及7668无线通刷线刷包
- Radius/Free Radius/Diameter协议
- IOS启动动画(广告)
- 音乐节拍识别 计算机,科学网—音乐节拍跟踪或音乐节拍检测软件,LilyBeats alpha - 石自强的博文...
- uboot研读笔记 | 05 - 移植uboot 2012.04到JZ2440(支持Nand Flash读写)
- allegro生成不规则钻孔
- ubuntu虚拟机双网卡无法上网问题
- 网页图片尺寸查看方法
- 软件需求分析——需求工程过程
热门文章
- 驱动人生病毒清除教程
- 【深入理解JS核心技术】12. 什么是一阶函数
- 盘点:2012中国互联网大会十大亮点
- GreenSock2
- 程序匠人 - 程序调试(除错)过程中的一些雕虫小技
- 数字电路与逻辑设计计算机专业,数字电路与逻辑设计试卷(A)(04级计算机、网络工程、软件工程专业).doc...
- 非常有价值的JAVA开源项目
- 记事本编写java_如何使用记事本编写java程序
- ipv6中ospfv3不再支持_超星尔雅《2020年考研英语全程班》2020第五章节测验题库及试题答案...
- 微型计算机原理与接口技术第六版课后答案,微型计算机原理与接口技术(第6版)...