简谈Java语言的封装
简谈Java语言的封装
封装的定义
封装将复杂模块或系统的逻辑实现细节隐藏,让使用者只需要关心这个模块或系统怎么使用,而不用关心这个模块或系统是怎么实现的。
在面向对象的的编程中,我们一般通过接口来描述某个系统或模块具体什么功能。
举个通俗的例子:电视机的内部构造是极其复杂的,在需要对电视机进行“换台”操作时,就需要操控电视机中的许多部件,最终才能实现换台这个行为,而普通用户根本无法完成这样复杂的工作。因此,电视机的生产厂家就把这些功能封装起来,对用户仅仅配备一个接口:那就是遥控器!用户仅需要通过遥控器简单触发按钮,便可以实现复杂的操作,而不需要去了解电视机的内部构造及工作原理。
Java的封装示例
出于信息安全的考虑,我们在定义属性的时候就需要将其的权限设置为私有(private);而设置为私有的属性就不能被外部类访问了,如何解决?
这时就可以将这些私有属性封装起来,对外部类仅开放几个简单接口来实现需要功能。
再者,如若某个类的功能多,代码量巨大,这时就可以对外部提供几个简单的接口来实现功能(如输入输出),使用者无需知道实现功能的内部原理是什么。
下面做一个简单的示例:
第一个类:封装类
package 封装示例;
public class fengzhuang {
private String num;
private String name;
private int age;
private char sex;
public String getNum() {
return num;
}
public void setNum(String num) {
this.num = num;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public char getSex() {
return sex;
}
public void setSex(char sex) {
this.sex = sex;
}
public void print(){
System.out.println("num: "+num+"\nname: "+name+"\nage: "+age+"\nsex: "+sex);
}
}
第二个类:测试类,使用封装类提供的接口完成功能
package 封装示例;
public class test {
public static void main(String[] args) {
fengzhuang fz=new fengzhuang();
fz.setNum("001");
fz.setName("Jane");
fz.setAge(21);
fz.setSex('F');
fz.print();
}
}
以上代码中,变量num,name,age,sex都是私有属性,外部类无法访问到,此时通过封装类提供的接口来操作这些变量。
简谈Java语言的封装的更多相关文章
- 简谈Java语言的继承
Java语言的继承 这里简谈Java语言的三大特性之二——继承. Java语言的三大特性是循序渐进的.是有顺序性的,应该按照封装-->继承-->多态这样的顺序依次学习 继承的定义 百度百科 ...
- 浅谈Java语言环境搭建-JDK8
title: 浅谈Java语言环境搭建-JDK8 blog: CSDN data: Java学习路线及视频 1.What's the JDK,JRE JDK(Java Development Kit ...
- 简谈Java的join()方法
join()是Thread类的一个方法.根据jdk文档的定义: public final void join()throws InterruptedException: Waits for this ...
- 简谈java的split
最近都在处理视频音频,今天在合成音频视频时为了给合成的新文件换个新名字,我打算获取了之前的视频名称,用split来分割出不带后缀的名字,再自己加上后缀. 众所周知split可以分割由某种字符分段的St ...
- 简谈java 中的 继承和多态
继承(extends) : 1:object 是所有类的父(基)类. 2:子类继承父类所有的内容除了(private修饰的和构造方法). 3:子类在手动创建构造方法时,必须调用父类构造方法. 4:在J ...
- 简谈Java的join()方法(转)
join()是Thread类的一个方法.根据jdk文档的定义: public final void join()throws InterruptedException: Waits for this ...
- 简谈Java传值传引用
本随笔旨在强化理解传值与传引用 如下代码的运行结果 其中i没有改变,s也没有改变. 但model中的值均改变了. i :100s :hellomodel :testchangemodel2 :ch ...
- 简谈 Java 中的泛型通配符
很好的一篇文章https://zhuanlan.zhihu.com/p/26681625
- [01] Java语言的基本认识
0.写在前面的话 我们都知道在计算机的底层,它是识别二进制的,也就是说,计算机只能认识0和1.这主要是因为电路的逻辑只有两种状态,所以只需要0和1两个数字就可以表示低电平和高电平.而计算机是由数不清的 ...
随机推荐
- React:Composition
在日常的UI构建中,经常会遇到一种情况:组件本身更多是作为一个容器,它所包含的内容可能是动态的.未预先定义的.这时候它的内容取决另一个组件或外部的输入.比如弹层. props.children: Re ...
- linux文档目录
- DPDK开发环境搭建(学会了步骤适合各版本)
一.版本的选择 首先要说明的是,对于生产来说DPDK版本不是越高越好,如何选择合适的版本? 1.要选择长期支持的版本LTS(Long Term Support) 2.根据当前开发的系统环境选择 可以在 ...
- Mac node.js express-generator脚手架安装
前言 由于本人在学习NodeJs的express框架时,在Mac电脑上安装express遇到了一个深痛的坑点,特写此文来记录.该坑点的解决方案我在国内的度娘没有找到,问别人也没有方案,最后通过goog ...
- WXML属性一览表
id属性 <view id="xxx"></view> class属性 <view class="xxx"></vie ...
- 模板:DOM常用场景【表单提交】——javascript结合HTML DOM(或者JQuery)运用
一.删除行为前的提示 首先要有一个onclick的DOM(点击)事件,和一个JavaScript弹出框:confirm()确认框 <script> function del(){ var ...
- 工作中遇到的SQL
1.根据a表中的字段col,修改b表中的col UPDATE a INNER JOIN b ON a.id = b.id SET b.col = xx WHERE a.col = xx 2.模糊查询 ...
- JS轮播图带序号小点和左右按钮
轮播图作为前端比较简易的动画,使用非常频繁,这里记录以便使用 此轮播图为最简易自动播放,非无缝,但有按钮,有序号跳转小点 想看全套轮播图可以查看我的分类轮播图全套 html布局 <div sty ...
- 那些面试官必问的JAVA多线程和并发面试题及回答
Java多线程面试问题 1. 进程和线程之间有什么不同? 一个进程是一个独立(self contained)的运行环境,它可以被看作一个程序或者一个应用.而线程是在进程中执行的一个任务.Java运行环 ...
- cypher语句摘要
match(n) return n 返回所有的节点和关系,只要有就返回,对节点和关系的查找不做条件限制. match(n:Student) return n 返回所有的Student节点 创建节点:c ...