JAVA面向对象 封装原理及实例解析
这篇文章主要介绍了JAVA面向对象 封装原理及实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
抽象
去定义一个类的时候,实际上就是把一类事物的共有的属性和行为提取出来,形成一个物理模型(模板)。这种研究问题的方法称为抽象。
修饰符
Java提供四种访问控制修饰符号控制方法和变量的访问权限:
Ⅰ.公开级别:用pubilc修饰,对外公开
Ⅱ.受保护级别:用protected修饰,对子类和同一个包中的类公开
Ⅲ.默认级别:没有修饰符号,向同一个包的类公开
Ⅳ.私有级别:用private修饰,只有类本身可以访问,不对外公开
访问级别 | 访问控制修饰符 | 同类 | 同包 | 子类 | 不同包 |
公开 | public | √ | √ | √ | √ |
受保护 | protected | √ | √ | √ | × |
默认 | 没有修饰符 | √ | √ | × | × |
私有 | private | √ | × | × | × |
封装
封装就是把抽象出的数据和对数据的操作封装在一起,数据被保护在内部,程序的其它部分只有通过被授权的操作(成员方法),才能对数据进行操作。
代码
public class C { public static void main(String[] args){ Clerk clerk1 = new Clerk("小花",22,4500.57f); System.out.println("名字是:" + clerk1.name + "\n年龄:" + clerk1.getAge() + "\n薪水:" + clerk1.getSalary()); } } //职员 class Clerk{ public String name; //用private封装起来变成私有的 private int age; private float salary; //薪水 public Clerk(String name, int age ,float salary) { this.name = name; this.age = age; this.salary = salary; } //通过一个成员方法去控制和访问私有的属性 public int getAge() { return this.age; } public float getSalary() { return this.salary; } }
结果
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。
相关推荐
-
java封装的概念和实现方法示例
本文实例讲述了java封装的概念和实现方法.分享给大家供大家参考,具体如下: 封装:是将类的某些信息隐藏在类的内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作和访问. 封装的好处: 只能通过规定方法访问数据 隐藏类的实现细节 方便加入控制语句 方便修改实现 经过封装的属性,不能直接访问,要通过公共属性get/set方法访问. 代码: package com.jredu.oop.ch01; /** * 某公司要开发内部的 "办公管理信息系统",请使用面向对象的思
-
java自定义封装StringUtils常用工具类
自定义封装StringUtils常用工具类,供大家参考,具体内容如下 package com.demo.utils; import java.util.ArrayList; import java.util.List; import java.util.Map; /** * 字符串操作工具类 * @author dongyangyang * @Date 2016/12/28 23:12 * @Version 1.0 * */ public class StringUtils { /** * 首字
-
java连接mysql底层封装详解
本文实例为大家分享了java连接mysql底层封装代码,供大家参考,具体内容如下 连接数据库 package com.dao.db; import java.sql.Connection; import java.sql.SQLException; /** * 数据库连接层MYSQL * @author Administrator * */ public class DBConnection { /** * 连接数据库 * @return */ public static Connection
-
RxJava2和Retrofit2封装教程(整洁、简单、实用)
前言 RxJava2与Retrofit2是老搭档了,之前写了一篇<RxJava和Retrofit2的统一处理单个请求>,是用的Rxjava1.0,本次使用Rxjava2.0与Retrofit2进行封装,一样整洁.简单.实用.Rxjava2相比Rxjava1优化和改动不少了东西,网上有很多大神写的文章,这里就不粘贴复制了.封装的过程有什么问题.疑问,请在下方留言. 下面话不多说了,来一起看看详细的介绍吧 封装教程如下: 核心网络请求: package com.lin.netrequestdemo
-
Java使用BigDecimal进行运算封装的实际案例
日常对于金额计算,应该都是用的BigDecimal,可是苦于没有好的工具类方法,现在贡献一个我正在用的对于数字计算的工具类,项目中就是用的这个,简单粗暴好用,话不多说,代码奉上(该工具类需要引入google的一个jar,com.google.common.base.Optional,具体maven引入看文章末尾): import java.math.BigDecimal; public class NumberArithmeticUtils { /** * BigDecimal的加法运算封装 *
-
详解java封装继承多态
面向对象编程(Object Oriented Programming)有三大特性:封装.继承.多态.在这里,和大家一起加深对三者的理解. 封装 封装可以拆开理解,装,是把数据和方法放进了类里:封,把装进去的数据和成员方法加上访问权限.对于外界,内部细节是透明的,暴露给外面的是它的访问方法. 继承 继承,是为了重用父类代码.两个类若具有is a的关系就可以用extends.另外,继承也为实现多态做了铺垫. 多态 程序中定义的引用变量(java有两大数据类型,内部数据类型和引用数据类型)所指向的具体
-
RxJava+Retrofit实现网络请求封装的方法
简要介绍 Retrofit是当前应用非常广泛的网络请求框架,通常结合RxJava来进行网络请求,本文将展示一个采用RxJava+Retrofit的网络请求demo. 集成步骤 1.app工程的build.gradle中添加依赖 //retrofit2 implementation 'com.google.code.gson:gson:2.8.5' implementation 'com.squareup.retrofit2:retrofit:2.5.0' implementation 'com.
-
java封装前端查询条件通用版
本文实例为大家分享了java封装前端查询条件的具体代码,供大家参考,具体内容如下 import hengyi.oa.mobile.exception.ServiceException; import java.io.UnsupportedEncodingException; import java.util.List; import java.util.Map; import java.util.Map.Entry; import javax.servlet.http.HttpServletRe
-
Java基础之类型封装器示例
本文实例讲述了Java基础之类型封装器.分享给大家供大家参考,具体如下: Java类型封装器:封装或者包装了基本类型的类.因为基本类型不是对象,所以需要类型封装器. Double :parseDouble(), Float:parseFloat(), Long:parseLong(), Integer:parseInt(), Short:parseShort(), Byte:parseByte(), Character,Boolean 示例代码: import java.io.*; class
-
JAVA面向对象 封装原理及实例解析
这篇文章主要介绍了JAVA面向对象 封装原理及实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 抽象 去定义一个类的时候,实际上就是把一类事物的共有的属性和行为提取出来,形成一个物理模型(模板).这种研究问题的方法称为抽象. 修饰符 Java提供四种访问控制修饰符号控制方法和变量的访问权限: Ⅰ.公开级别:用pubilc修饰,对外公开 Ⅱ.受保护级别:用protected修饰,对子类和同一个包中的类公开 Ⅲ.默认级别:没有修饰符号,向同一
-
Java switch使用原理及实例解析
这篇文章主要介绍了Java switch使用及实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 java中有两个经常用于条件判断的方法,一个是if{}else{},另一个就是switch()了.总的来说因为switch可以直接一对一满足条件,不满足条件的情况是不会执行的的所以switch的效率会相对if{}else{}更高一些,而且这两个方法是可以无门槛互换的. switch的使用: 能用于switch判断的类型有:byte.short.
-
java阻塞队列实现原理及实例解析
这篇文章主要介绍了java阻塞队列实现原理及实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 阻塞队列与普通队列的不同在于.当队列是空的时候,从队列中获取元素的操作将会被阻塞,或者当队列满时,往队列里面添加元素将会被阻塞.试图从空的阻塞队列中获取元素的线程将会被阻塞,直到其他的线程往空的队列插入新的元素.同样,试图往已满的阻塞队列中添加新元素的线程同样也会被阻塞,直到其他的线程使队列重新变得空闲起来,如从队列中移除一个或者多个元素,或者完
-
Java HashMap原理及实例解析
这篇文章主要介绍了Java HashMap原理及实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 示例 1 : HashMap的键值对 HashMap储存数据的方式是-- 键值对 package collection; import java.util.HashMap; public class TestCollection { public static void main(String[] args) { HashMap<String
-
Java内存模型原子性原理及实例解析
这篇文章主要介绍了Java内存模型原子性原理及实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 本文就具体来讲讲JMM是如何保证共享变量访问的原子性的. 原子性问题 原子性是指:一个或多个操作,要么全部执行且在执行过程中不被任何因素打断,要么全部不执行. 下面就是一段会出现原子性问题的代码: public class AtomicProblem { private static Logger logger = LoggerFactory.
-
Java原子变量类原理及实例解析
这篇文章主要介绍了Java原子变量类原理及实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 一.原子变量类简介 为何需要原子变量类 保证线程安全是 Java 并发编程必须要解决的重要问题.Java 从原子性.可见性.有序性这三大特性入手,确保多线程的数据一致性. 确保线程安全最常见的做法是利用锁机制(Lock.sychronized)来对共享数据做互斥同步,这样在同一个时刻,只有一个线程可以执行某个方法或者某个代码块,那么操作必然是原子性
-
vue封装swiper代码实例解析
这篇文章主要介绍了vue封装swiper代码实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 data(){ return{ list:[], swiperOption:"", xiding : "", // 轮播高度 SwiperHeight:'' } }, mounted(){ this.onload() // 获取轮播图图片的高度 setTimeout(()=> { // 通过ref获取轮播dom
-
Pandas数据离散化原理及实例解析
这篇文章主要介绍了Pandas数据离散化原理及实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 为什么要离散化 连续属性离散化的目的是为了简化数据结构,数据离散化技术可以用来减少给定连续属性值的个数.离散化方法经常作为数据挖掘的工具 扔掉一些信息,可以让模型更健壮,泛化能力更强 什么是数据的离散化 连续属性的离散化就是在连续属性的值域上,将值域划分为若干个离散的区间,最后用不同的符号或整数 值代表落在每个子区间中的属性值 分箱 案例 1.
-
Java编程时间日期API实例解析
本文实例主要是关于Java8中的新特性,时间日期api的相关实例,具体如下: package com.effective.common.base.date; import java.time.Instant; import java.time.LocalDate; import java.time.LocalDateTime; import java.time.LocalTime; import java.time.Period; import java.time.ZoneId; import
-
Python assert关键字原理及实例解析
这篇文章主要介绍了Python assert关键字原理及实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 Python assert(断言)用于判断一个表达式,在表达式条件为 False 的时候触发异常. 断言可以在条件不满足程序运行的情况下直接返回错误,而不必等待程序运行后出现崩溃的情况. 语法格式: assert expression 等价于: if not expression: raise AssertionError asser
随机推荐
- js实现动态显示时间效果
- 如何用变量实现群聊和悄悄话?
- SQLServer2005 XML数据操作代码
- python里使用正则的findall函数的实例详解
- 12个非常实用的JavaScript小技巧【推荐】
- Php Image Resize图片大小调整的函数代码
- php preg_match的匹配不同国家语言实例
- MyEclipse连接MySQL数据库报错解决办法
- INSERT INTO .. ON DUPLICATE KEY更新多行记录
- Android应用中使用ListView来分页显示刷新的内容
- Android刮刮卡功能具体实现代码
- Lua中使用元表(metatable)执行算术类元方法实例
- 数据库查询排除重复记录的方法
- C++中CSTRINGLIST用法详解
- 用jQuery模拟select下拉框的简单示例代码
- Windows XP的几则“自动化”应用
- ASP.NET MVC 4 中的JSON数据交互的方法
- 交换机命令之一--华为
- 解决JS表单验证只有第一个IF起作用的问题
- 修改node.js默认的npm安装目录实例