匿名对象
匿名对象:
没有名字的实体,也就是该实体没有对应的变量名引用。
匿名对象的用途
当对象对方法进行一次调用的时候,可以使用匿名对象对代码进行简化。为什么只对方法,而不调用属性呢?因为匿名对象调用属性没意义。如果对象要多成员进行多次调用,必须给对象起个名字。不能使用匿名对象。
匿名对象的简单演示
接上一篇的汽车run方法。
new Car().run();
内存结构图(我好懒,不画了。)
new Car().num=5;
new Car().clor=”blue”;
两个new 是两个不同的对象,在堆内存中有不同的空间,相互不相互干扰。
匿名对象的使用
当只使用一次时可以使用匿名对象。执行完毕到;后该对象就变成了垃圾。执行方法时,可以将匿名对象作为实际参数,传递进去。
封装
封装的好处:
1:隐藏了类的具体实现
2:操作简单
3:提高对象数据的安全性
/**
Demo9描述一个计算器类。
*/
//使用词霸确定类名
class Calculator
{
// 1. 查看具体的计算器对象抽取所有计算器具有的共同属性
public String name = "我的计算器我做主";
public double num1;
public double num2;
public char option;
// 2. 查看具体的计算器对象抽取所有计算器具有的共同功能
// 2.1 定义接受数据的功能函数
public void init( double a , char op , double b ){
num1 = a;
option = op;
num2 = b;
}
// 2.2 定义计算的功能
public void calculate(){
switch ( option )
{
case '+': System.out.println( name + " : " + num1 + " + " + num2 + " = " + ( num1 + num2 ) );
break;
case '-': System.out.println( name + " : " + num1 + " - " + num2 + " = " + ( num1 - num2 ) );
break;
case '*': System.out.println( name + " : " + num1 + " * " + num2 + " = " + ( num1 * num2 ) );
break;
case '/': {
if( num2 != 0 )
System.out.println( name + " : " + num1 + " / " + num2 + " = " + ( num1 / num2 ) );
else
System.out.println("除数不能为0!");
break;
}
case '%': {
// 1.处理结果的符号问题,使得结果的符号满足数学的要求
// 2.解决NaN的问题
System.out.println( name + " : " + num1 + " % " + num2 + " = " + ( num1 % num2 ) );
break;
}
default : System.out.println("你在捣乱,我不理你,气死你......");
}
}
}
class Demo9
{
public static void main(String[] args)
{
Calculator cal = new Calculator();
cal.init( 41 , '%' , 0 );
cal.calculate();
System.out.println("计算完毕!再来一次......");
}
}