zoukankan      html  css  js  c++  java
  • java面向对象之封装

    面向对象的三大特征:封装,多态,继承

    面向对象——封装:

    封装的概念:

      封装是指一种将抽象性函式接口的实现细节部分包装、隐藏起来的方法。封装可以被认为是一个保护屏障,防止该类的代码和数据被外部类定义的代码随机访问。

    封装的步骤:

      1、使用private参数修饰该成员变量(private是私有的,只能在本类中进行访问,public是公共的,所有类都可以访问)

      2、使用一种公共方法对每个参数进行赋值,用于对外访问

    封装的好处(个人认为):

      1、能够起到保护作用,其他人并不能直接对成员变量进行赋值,并且可以通过公共类对赋值的参数进行控制,避免输入错误的参数

      2、操作相对简单(高内聚,低耦合),其他人只需要调用公共方法就可以操作该类;(另外对于IDEA来说,Alt+insert可以快速对成员变量进行封装,避免手写的烦恼)

      3、能够隐藏功能的实现

    实例:

    需求:使用封装的方法实现一个简单的计算器

    需求分析:首先要实现计算器,必须的参数是两个数字和一个符号,所以成员变量就可以定为data1,data2,symbol,另外对于计算器而言,只关心输出结果,所以我封装的时候并不需要设置getter方法,另外对于符号,得做基本的控制,不能输入非运算符也进行处理,鉴于此,实现代码如下:

    实现1:单独对每一个参数进行封装(分别设置setter方法)

    package Counter;
    
    public class Calculator1 {
    
        private int data1;
        private int data2;
        private char symbol;
        //对private类型的参数进行单独封装
        public void setData1(int data1) {
            this.data1 = data1;
        }
        public void setData2(int data2) {
            this.data2 = data2;
        }
        public void setSymbol(char symbol) {
            this.symbol = symbol;
        }
        //定义一个公共方法,实现计算的功能
        public void  Cal(){
            int result;
            if(symbol=='+'){
                result = data1 +data2;
            }else if(symbol=='-'){
                result = data1-data2;
            }else if(symbol == '*'){
                result = data1*data2;
            }else{
                result = data1/data2;
            }
            System.out.println("使用方法1计算的结果: "+result);
       }
    }

    方法2:定义一个公共方法,用于整体的赋值:

    package Counter;
    
    public class Calculator {
        private int data1;
        private int data2;
        private char symbol;
    
        //定义一个公共方法,用来传参数          这样写的好处是可以将参数控制在一个方法中,更加方便,也可以分开写 比如Calculator1类;
        public void setData(int data1,int data2,char symbol){
            //因为只做整形数据的运算,所以对待输入数字不必要做校验;
            this.data1 = data1;
            this.data2 = data2;
    
            //对于运算符需要做判断,万一输入非运算符,比如A,?等;
            if (symbol == '+'|| symbol == '-'|| symbol == '*' ||symbol =='/'){
                this.symbol = symbol;
            }else {
                this.symbol = '+';
            }
        }
        //定义一个公共方法,实现计算的功能;
        public  void  Cal(){
            int result = 0;
    
            switch(symbol){
                case '+':
                    result = data1+data2;
                    break;
                case '-':
                    result = data1-data2;
                    break;
                case '*':
                    result = data1*data2;
                    break;
                case '/':
                    result = data1/data2;
                    break;
            }
            System.out.println("使用方法2计算的结果: "+result);
        }
    }

    这样计算器类就基本写好了,来尝试调用它,看看结果

    package Counter;
    
    public class Main {
    
        public  static void main(String[] args){
    
            //方法1:调用Calculator1的set方法 设置参数(每个参数单独设置,比较麻烦)
            Calculator1 cc = new Calculator1();
            cc.setData1(7);
            cc.setData2(9);
            cc.setSymbol('*');
            cc.Cal();
            
            //方法2:调用Calculator的setData方法设置参数
            Calculator c = new Calculator();
            c.setData(3,4,'/');
            c.Cal();
        }
    }

    这样输出的结果如下(值是随便定义的):

    FilesJavajdk1.8.0_181jrelib
    t.jar;D:mytestoutproductionmytest" Counter.Main
    使用方法1计算的结果: 63
    使用方法2计算的结果:0
    
    Process finished with exit code 0

    ——————————————————————————————————————————————————————————————————————————————————————————————————————————————

    说明:作为一个java菜鸟,目前处于学习阶段,平时也在工作,晚上会上一个小时左右的课,基本上会在工作之余通过博客去整理回顾昨天的学习内容,希望能有所积累和提升,如果有人能看到文章,如果发现不对的地方,欢迎指正

      

    —————————————————————————————————————————————————————————————————————————————————————————————————————————————— 保持学习的劲头
  • 相关阅读:
    大数据应用案例之医疗行业
    优先数调度:按最高优先级算法
    实验二:先来先服务进程调度
    实验一:熟练使用DOS操作命令实验
    考试管理搭建帮助文档
    介绍配置管理工具SVN的使用
    在VMware安装Windows server 2003操作系统帮助文档
    搭建一个考试管理系统
    WinMail邮件服务器(客户端)环境搭建与配置
    搭建OA项目环境及卸载指南
  • 原文地址:https://www.cnblogs.com/qkblogs/p/12625142.html
Copyright © 2011-2022 走看看