zoukankan      html  css  js  c++  java
  • Java学习笔记十八:Java面向对象的三大特性之封装

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

  • 相关阅读:
    集群间如何实现session共享
    详解PHP如何实现单点登录
    jsonp原理详解
    跨站请求CSRF攻击
    防止SQL注入
    在springboot中使用h2数据库
    Datalab实验
    飞步无人驾驶2018届校园招聘在线笔试A轮
    HDU6030 Happy Necklace
    HDU5950 Recursive sequence
  • 原文地址:https://www.cnblogs.com/pureqh/p/9153221.html
Copyright © 2011-2022 走看看