欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Java学习笔记十八:Java面向对象的三大特性之封装

程序员文章站 2023-01-17 17:59:25
Java面向对象的三大特性之封装一:面向对象的三大特性;二:封装的概念;三:封装的好处;四:实现Java封装的步骤; ......

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

 

 

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

  • 封装
  • 继承
  • 多态

 

二:封装的概念;

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

 

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

 

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

 

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

 

三:封装的好处;

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

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

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

 

四:实现Java封装的步骤;

1.修改属性的可见性;

如:Java学习笔记十八:Java面向对象的三大特性之封装

2.创建getter/setter方法;

如:

Java学习笔记十八:Java面向对象的三大特性之封装

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

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

4.举个例子:

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

Java学习笔记十八:Java面向对象的三大特性之封装

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

所以我们在源代码的变量加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("有参的构造方法执行了");
    }
}

 

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

Java学习笔记十八:Java面向对象的三大特性之封装

如何访问呢,我们使用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值的属性

运行结果为:

Java学习笔记十八:Java面向对象的三大特性之封装

 

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

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