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. layui 设计资源——2.0 版本的 Axure 组件包,产品交互设计利器

    大家好,很久不见,这次为大家分享的是 layui_2.0版本的axure组件包,在去年发布的 layui Axure 1.0 中(见:http://fly.layui.com/jie/9842/ )赢 ...

  2. Eclipse 中 SVN 提交过滤

  3. console和windows子系统

    https://blog.csdn.net/ilvu999/article/details/8050292

  4. 年金(annuity)

    一.定义 一系列的付款(或收款),付款时间和付款金额具有一定规律性. 二.分类 1-支付时间和支付金额是否确定?确定年金(annuity-certain)风险年金(contingent annuity ...

  5. Win10安装msi程序报错2503和2502错误解决方案

    刚升级了系统到win10,重新搭建开发环境,在安装scala的时候一直报2503.2502错误,如图 试了好几种办法都不好使,现在罗列依次用到的三种方法: 一.命令提示符(管理员)启动 "w ...

  6. 判断ORACLE启动时使用spfile还是pfile

    自Oracle 9i以后启动的时候默认使用的初始化文件是spfile,我们可以通过如下三种方式来判断是SPFILE还是PFILE方式启动数据库.1.show parameter spfile2.sho ...

  7. February 5 2017 Week 6 Sunday

    Prosperity discovers vice, adversity virtue. 得意时露瑕疵,逆境中见品质. Adversity will discover your virtue, not ...

  8. Timer类注意事项

    Java的一个Timer对象可以执行多个Timertask任务,但是一个Timer对象本身只有一个线程,如果向他提交多个task,并且某个task相当耗时的话,其他的task即使到了执行时间,仍然会等 ...

  9. Kafka与MQ的区别

    作为消息队列来说,企业中选择mq的还是多数,因为像Rabbit,Rocket等mq中间件都属于很成熟的产品,性能一般但可靠性较强, 而kafka原本设计的初衷是日志统计分析,现在基于大数据的背景下也可 ...

  10. Fcoin和Coinex,谁更值得投资?

    2018年是数字货币市场很熊的一年,大部分币种在这一年下跌超过了90%.但是这一年对于数字货币的发展也是不平凡的,可以说是至关重要的一年.通证经济商业模型在这一年萌芽,并茁壮成长,2018是通证经济元 ...