Java面向对象的三大特性之封装

一:面向对象的三大特性;

  • 封装
  • 继承
  • 多态

 

二:封装的概念;

  将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作和访问;

  封装可以被认为是一个保护屏障,防止该类的代码和数据被外部类定义的代码随机访问。

  要访问该类的代码和数据,必须通过严格的接口控制。

  封装最主要的功能在于我们能修改自己的实现代码,而不用修改那些调用我们代码的程序片段。适当的封装可以让程式码更容易理解与维护,也加强了程式码的安全性。

三:封装的好处;

  1.只能通过规定的方法访问数据

  2.隐藏类的实例细节,方便修改和实现

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

四:实现Java封装的步骤;

1.修改属性的可见性;

如:

2.创建getter/setter方法;

如:

3.在getter/setter方法中加入属性控制语句;

  对属性值的合法性进行判断

4.举个例子:

部分讲解在注释,请留意。

我们应该用封装的方式将我们的属性信息隐藏起来,给用户一个特定的方式访问数据

所以我们在源代码的变量加private修饰符

代码如下:

public class Telphone {
private float screen;
private float cpu;
private float mem;
//自己创建的构造方法
public Telphone(){
System.out.println("无参的构造方法执行了");
}
public Telphone(float newScreen,float newCpu,float newMem){
screen = newScreen;
cpu = newCpu;
mem =newMem;
System.out.print("有参的构造方法执行了");
}
}

于是现在不允许用户随便访问默认的值了

如何访问呢,我们使用set/get方法访问

代码如下:

Telphone类:

package com.test;

//1.定义一个类
public class Telphone {
private float screen;
private float cpu;
private float mem;
//自己创建的构造方法 //创建一个get方法获得属性Screen的值
public float getScreen(){
return screen;
}
//创建一个set方法传入参数
public void setScreen(float newScreen){
screen =newScreen;
}
public Telphone(){
System.out.println("无参的构造方法执行了");
}
public Telphone(float newScreen,float newCpu,float newMem){
screen = newScreen;
cpu = newCpu;
mem =newMem;
System.out.print("有参的构造方法执行了");
}
}

InitailTelphone类:

package com.test;

public class InitailTelphone {

    public static void main(String[] args) {

    Telphone phone2 = new Telphone(5.0f,1.4f,2.0f);
//phone2.cpu = 5.2f;//在这个例子中,用户可以通过phone2这个对象直接修改我们的原始数据,
//这样是不安全的
//通过封装方法set方法得到属性Screen的值
phone2.setScreen(6.0f);
System.out.println();
System.out.println("screen:"+phone2.getScreen());
}
}

这里我们使用了set方法传入参数并通过get方法获取了Screen值的属性

运行结果为:

所以封装就是隐藏属性,通过方法来得到属性

其中set方法用来传入参数,get方法用来获取参数

Java学习笔记十八:Java面向对象的三大特性之封装的更多相关文章

  1. java基础笔记(6)----面向对象的三大特性

    简介:面向对象的三大特性就是封装,继承,多态,是面向对象的核心. 封装 简介:封装是类的边界,可以对数据起到保护作用 特性:属性私有,提供公开的get/set方法 属性私有:private 数据类型 ...

  2. Java学习笔记十五:Java中的成员变量和局部变量

    Java中的成员变量和局部变量 一:成员变量: 成员变量在类中定义,用来描述对象将要有什么 成员变量可以被本类的方法使用,也可以被其他类的方法使用,成员变量的作用域在整个类内部都是可见的 二:局部变量 ...

  3. Java学习笔记十九:Java中的访问控制修饰符

    Java中的访问控制修饰符 一:Java修饰符的种类: 访问修饰符 非访问修饰符 修饰符用来定义类.方法或者变量,通常放在语句的最前端.我们通过下面的例子来说明: public class Hello ...

  4. Java学习笔记十六:Java中的构造方法

    Java中的构造方法 1.使用new+构造方法 创建一个新的对象: 2.构造方法是定义在Java类中的一个用来初始化对象的方法: 3.构造方法与类同名且没有返回值: 4.语法格式: public 构造 ...

  5. Java学习笔记十二:Java中方法的重载

    Java中方法的重载 什么是方法的重载呢? 如果同一个类中包含了两个或两个以上方法名相同.方法参数的个数.顺序或类型不同的方法,则称为方法的重载,也可称该方法被重载了.如下所示 4 个方法名称都为 s ...

  6. python3.4学习笔记(十八) pycharm 安装使用、注册码、显示行号和字体大小等常用设置

    python3.4学习笔记(十八) pycharm 安装使用.注册码.显示行号和字体大小等常用设置Download JetBrains Python IDE :: PyCharmhttp://www. ...

  7. Python 面向对象的三大特性:封装,继承,多态

    # 面向对象的三大特性:封装,继承,多态 # 继承的影响:资源的继承,资源的使用,资源的覆盖,资源的累加 # 资源的继承,在Python中的继承是指能使用父类的资源,而不是说在子类也复制一份父类代码到 ...

  8. Python 入门 之 面向对象的三大特性(封装 / 继承 / 多态)

    Python 入门 之 面向对象的三大特性(封装 / 继承 / 多态) 1.面向对象的三大特性: (1)继承 ​ 继承是一种创建新类的方式,在Python中,新建的类可以继承一个或多个父类,父类又可以 ...

  9. Java学习笔记二十一:Java面向对象的三大特性之继承

    Java面向对象的三大特性之继承 一:继承的概念: 继承是java面向对象编程技术的一块基石,因为它允许创建分等级层次的类. 继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方 ...

随机推荐

  1. double转换long的疑问

    在lua(5.1.4)下面测试的时候使用0x100000000的时候出现了问题,打印结果很明显,如下所示: Lua Copyright (C) - Lua.org, PUC-Rio > prin ...

  2. Batch Normalization 笔记

    原理 BN的效果 Why BN works? 原理 输入层可以归一化,那么其他层也应该可以归一化.但是有个重要的问题,为什么要引入beta和gamma. 为什么要引入beta和gamma 不总是要标准 ...

  3. sql server alter column 由于一个或多个对象访问此列,ALTER TABLE ALTER COLUMN 失败

    今天在修改一个字段类型,由原来的 varchar(500) 增加到 varchar(1000) 则对应的SQL 语句,执行后如图错误 结果查下来是因为其中一个视图建成了索引视图, 解决办法:先将该视图 ...

  4. 使用MongoDB血泪般的经验教训

    故事背景,天书世界,现在项目已经属于成熟维护期,是时候总结一下当时的想法 第一个问题,为什么使用mongodb? 数据库对于游戏项目本身的要求与传统业务系统差异较大,所以nosql的弱结构性对于我那是 ...

  5. jq实现随机显示部分图片在页面上(兼容IE5)

    <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...

  6. 在UML系统开发中有三个主要的模型

    http://www.cnblogs.com/Yogurshine/archive/2013/01/14/2859248.html 在UML系统开发中有三个主要的模型: 功能模型: 从用户的角度展示系 ...

  7. 最简单的PS渐变导入方法 photoshop渐变插件素材导入教程

    photoshop渐变插件素材可以让用户更好更直接,更快速地设计出自己想要的效果作品.网上有多种多样的ps渐变,那么Mac版Ps渐变怎么导入呢?这里我来和大家分享一下photoshop渐变插件素材导入 ...

  8. nssm 在windows上部署服务

    简介 NSSM是一款可将Nodejs项目注册为Windows系统服务的工具.当你的Node.js项目需要部署在Windows Server上时,NSSM是一个不错的选择. 特点 NSSM将Node.j ...

  9. 全新释放 | RealSight APM, 让客户的极致数字体验成为可能

    根据专业评测机构 downdetector.com 统计,2018年,Facebook 系统全年宕机 200 次,Youtube 宕机  140 次,Google 宕机 100 次.每次宕机损失至少 ...

  10. async--ajax异步传输

    如图:轨迹点组编号依赖所属路口的设置. 所以ajax是异步执行,获取到所属路口还没执行完,就已经执行到根据所述路口获取轨迹点组编号,所以获取不到轨迹点组编号. async:false改成同步执行.就没 ...