1.参数传值,顾明思意,就是把一个变量的数值传给另一个变量。
比如:
int x = 10,y;
y = x;
其中x的值传给y了,y的值是10,但x的值仍是10。
其中到底是怎么实现的呢?
其实在这里的传值(即赋值)所用的值不是x的本值,而是它的拷贝。
所以不会影响x的值。参数y得到的值相当于生活中的”原件“”的“复印件“。
对y的操作不会对x有影响,这就是参数的传值原理。同理,引用类型的参数的传的值是地址数也是拷贝来的。
2.对象的组合
首先我们知道一个类可以吧某个对象作为自己的一个成员变量,若用这样的类创建一个对象,那么这个对象中就会有其他的对象,也就是说这个的对象将其他的对象作为自己的组成部分,这就是Has-A.
如果对象a组合了对象b,那么对象a就可以委托对象b调用其方法,就是对象a以组合的方式复用对象b的方法。
我们可以用这样的方法引用其他类里的方法。
例子:
package shaman4_2;
public class Family {
TV homeTV;
void buyTV(TV tv)
{
homeTV = tv;
}
void remoteControl(int m)
{
homeTV.setChannel(m);
}
void seeTV()
{
homeTV.showProgram();
}
}
package shaman4_2;
public class TV {
int channel;
void setChannel(int m)
{
if(m>=1) {
channel = m;
}
}
int getChannel()
{
return channel;
}
void showProgram()
{
switch(channel)
{
case 1 : System.out.println("综合频道");
break;
case 2 : System.out.println("经济频道");
break;
case 3 : System.out.println("文艺频道");
break;
case 4 : System.out.println("国际频道");
break;
case 5 : System.out.println("体育频道");
break;
default : System.out.println("不能收看"+channel+"频道");
}
}
}
package shaman4_2;
public class MainClass {
public static void main(String[] args) {
TV haierTV = new TV();
haierTV.setChannel(5);
System.out.println("haierTV的频道是"+haierTV.getChannel());
Family zhangSanFamily = new Family();
zhangSanFamily.buyTV(haierTV);
System.out.println("zhangSanFamily开始看电视节目");
zhangSanFamily.seeTV();
int m = 2;
System.out.println("zhangSanFamily将电视更换到"+m+"频道");
zhangSanFamily.remoteControl(m);
System.out.println("haierTV的频道是"+haierTV.getChannel());
System.out.println("zhangSanFamily在看电视节目");
zhangSanFamily.seeTV();
}
}
这个例子很好的说明了对象的组合复用
以上内容包含个人的学习总结,如存在不合理的地方,欢迎大家指出,相互学习。