博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java学习笔记十八:Java面向对象的三大特性之封装
阅读量:6403 次
发布时间:2019-06-23

本文共 2014 字,大约阅读时间需要 6 分钟。

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方法用来获取参数

 

转载于:https://www.cnblogs.com/pureqh/p/9153221.html

你可能感兴趣的文章
maven安装配置部署建项运行
查看>>
node爬虫
查看>>
接口测试之JMeter初探
查看>>
Docker背后的内核知识——cgroups资源限制(转)
查看>>
Java技术——Java泛型详解(转)
查看>>
某个第三方支付平台数据库的分析、学习与总结(转)
查看>>
Linux Linux程序练习八
查看>>
读书笔记:《写给大家看的设计书》
查看>>
Predicate与filter
查看>>
UITableViewCell 取消分隔线
查看>>
性能测试工具 nGrinder 项目剖析及二次开发
查看>>
Mybatis集成pagehelper and jsqlparser(分页)
查看>>
50+ 顶级开源 Kubernetes 工具列表
查看>>
老年夫妇为何分床睡?83岁的奶奶是这样说的……
查看>>
恶意软件日均进攻百万次!三大方法保护Hadoop集群免遭攻击!
查看>>
小米品牌年度盛典今日开启 多款明星产品引爆抢购热潮
查看>>
猎豹智库Q3最新数据:ofo用户活跃渗透率连续领先摩拜 稳居第一
查看>>
手把手教你HDFS基础配置安装及命令使用!
查看>>
机器人索菲亚打算生儿育女,连孩子名字都想好了!
查看>>
中国最西北高寒铁路线铺就春运“平安路”
查看>>