面向对象的三大特征:封装,多态,继承
面向对象——封装:
封装的概念:
封装是指一种将抽象性函式接口的实现细节部分包装、隐藏起来的方法。封装可以被认为是一个保护屏障,防止该类的代码和数据被外部类定义的代码随机访问。
封装的步骤:
1、使用private参数修饰该成员变量(private是私有的,只能在本类中进行访问,public是公共的,所有类都可以访问)
2、使用一种公共方法对每个参数进行赋值,用于对外访问
封装的好处(个人认为):
1、能够起到保护作用,其他人并不能直接对成员变量进行赋值,并且可以通过公共类对赋值的参数进行控制,避免输入错误的参数
2、操作相对简单(高内聚,低耦合),其他人只需要调用公共方法就可以操作该类;(另外对于IDEA来说,Alt+insert可以快速对成员变量进行封装,避免手写的烦恼)
3、能够隐藏功能的实现
实例:
需求:使用封装的方法实现一个简单的计算器
需求分析:首先要实现计算器,必须的参数是两个数字和一个符号,所以成员变量就可以定为data1,data2,symbol,另外对于计算器而言,只关心输出结果,所以我封装的时候并不需要设置getter方法,另外对于符号,得做基本的控制,不能输入非运算符也进行处理,鉴于此,实现代码如下:
实现1:单独对每一个参数进行封装(分别设置setter方法)
packageCounter;public classCalculator1 {private intdata1;private intdata2;private charsymbol;//对private类型的参数进行单独封装
public void setData1(intdata1) {this.data1 =data1;
}public void setData2(intdata2) {this.data2 =data2;
}public void setSymbol(charsymbol) {this.symbol =symbol;
}//定义一个公共方法,实现计算的功能
public voidCal(){intresult;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:定义一个公共方法,用于整体的赋值:
packageCounter;public classCalculator {private intdata1;private intdata2;private charsymbol;//定义一个公共方法,用来传参数 这样写的好处是可以将参数控制在一个方法中,更加方便,也可以分开写 比如Calculator1类;
public void setData(int data1,int data2,charsymbol){//因为只做整形数据的运算,所以对待输入数字不必要做校验;
this.data1 =data1;this.data2 =data2;//对于运算符需要做判断,万一输入非运算符,比如A,?等;
if (symbol == '+'|| symbol == '-'|| symbol == '*' ||symbol =='/'){this.symbol =symbol;
}else{this.symbol = '+';
}
}//定义一个公共方法,实现计算的功能;
public voidCal(){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);
}
}
这样计算器类就基本写好了,来尝试调用它,看看结果
packageCounter;public classMain {public static voidmain(String[] args){//方法1:调用Calculator1的set方法 设置参数(每个参数单独设置,比较麻烦)
Calculator1 cc = newCalculator1();
cc.setData1(7);
cc.setData2(9);
cc.setSymbol('*');
cc.Cal();//方法2:调用Calculator的setData方法设置参数
Calculator c = newCalculator();
c.setData(3,4,'/');
c.Cal();
}
}
这样输出的结果如下(值是随便定义的):
Files\Java\jdk1.8.0_181\jre\lib\rt.jar;D:\mytest\out\production\mytest" Counter.Main
使用方法1计算的结果: 63使用方法2计算的结果:0Process finished with exit code0
——————————————————————————————————————————————————————————————————————————————————————————————————————————————
说明:作为一个java菜鸟,目前处于学习阶段,平时也在工作,晚上会上一个小时左右的课,基本上会在工作之余通过博客去整理回顾昨天的学习内容,希望能有所积累和提升,如果有人能看到文章,如果发现不对的地方,欢迎指正