帮忙讲清楚方法的组合和复用+一些代码错误
package act;public class SIM
{
long number;
SIM(long number)
{
this.number = number;
}
long getNumber()
{
return number;
}
}
public class MobileTelephone
{
SIM sim;
void setSIM(SIM card)
{
sim = card;
}
long lookNumber()
{
return sim.getNumber;
}
}
public class act
{
public static void main(String[] args)
{
SIM sinOner = new SIM(13889776509L);
mobile.setSIM(simone);
System.out.println("手机号码:"+mobile.lookNumber());
SIM simtwo = new SIM(15967563567L);
mobile.setSIM(simTwo);
System.out.println("手机号码:"+mobile.lookNumber());
}
}
这个代码运行不动,我也有试过放在三个class里运也不行
然后两页书上的的代码,那个Circle bottom那玩意就是组合吗再到getVolme()方法哪里为什么是bottom.getRadius?
gzq44 发表于 2020-10-19 22:24
我就卡void setSIM(SIM card)
{
sim = card;
你上面的错误,是你public class跟文件名不一样。。。。。。 方法和复用这里看着好乱,照着书上抄了一个还运行不了 一个.java文件,只能有一个public class public class act
{
public static void main(String[] args)
{
MobileTelephone mobile = new MobileTelephone();
SIM sinOner = new SIM(13889776509L);
mobile.setSIM(sinOner);
System.out.println("手机号码:"+mobile.lookNumber());
SIM simtwo = new SIM(15967563567L);
mobile.setSIM(simtwo);
System.out.println("手机号码:"+mobile.lookNumber());
}
}
class SIM
{
long number;
SIM(long number)
{
this.number = number;
}
long getNumber()
{
return this.number;
}
}
class MobileTelephone
{
SIM sim;
void setSIM(SIM card)
{
sim = card;
}
long lookNumber()
{
return sim.getNumber();
}
} 能解释下组合的使用吗,主要是这个 gzq44 发表于 2020-10-19 11:55
能解释下组合的使用吗,主要是这个
啥意见????那几个类的相互调用???? 2269099035 发表于 2020-10-19 13:41
啥意见????那几个类的相互调用????
方式啊 2269099035 发表于 2020-10-19 10:49
不行仍是报错,不止这个问题,我按你的代码还是不能运行 好像都不太懂我的意思,像这个手机卡的代码若主class里MobileTelephone mobile = new MobileTelephone();
mobile.setSIM(sinOner);
mobile.setSIM(simtwo);去掉有无什么样子的影响?不也可以输出?? gzq44 发表于 2020-10-19 19:19
好像都不太懂我的意思,像这个手机卡的代码若主class里MobileTelephone mobile = new MobileTelephone();
...
你说的那三行去掉,那你把输出那里改成System.out.println("手机号码:"+sinOner.getNumber());跟System.out.println("手机号码:"+simtwo.getNumber());一样的效果啊。这样的话class MobileTelephone就没用呗。没理解你想表达啥。还有,你把自己的报错贴出来,我这里是正常的。 {:10_292:} 2269099035 发表于 2020-10-19 19:42
你说的那三行去掉,那你把输出那里改成System.out.println("手机号码:"+sinOner.getNumber());跟System. ...
在下面了,我觉得我意思已经形容的很清楚了呀??拿手机卡来说怎么理解class MobileTelephone这个类的作用??SIM sim;
void setSIM(SIM card)
{
sim = card;
}这个部分怎么理解?? gzq44 发表于 2020-10-19 20:11
在下面了,我觉得我意思已经形容的很清楚了呀??拿手机卡来说怎么理解class MobileTelephone这个类的作 ...
代码是你写的,啥作用你自己定义啊{:10_277:}。这个不就是相当于是一个赋值吗。把card对象传给sim对象 2269099035 发表于 2020-10-19 22:10
代码是你写的,啥作用你自己定义啊。这个不就是相当于是一个赋值吗。把card对象传给sim对象
这不是我写的,我抄书上的想来试试删掉会发生什么无奈一直运不了 2269099035 发表于 2020-10-19 22:10
代码是你写的,啥作用你自己定义啊。这个不就是相当于是一个赋值吗。把card对象传给sim对象
我就卡void setSIM(SIM card)
{
sim = card;
}
这个部分 你mobile没有定义为mobilephone的对象吧 2269099035 发表于 2020-10-20 00:19
你上面的错误,是你public class跟文件名不一样。。。。。。
改好了,可以运行 本帖最后由 slience_缄默 于 2020-10-26 10:43 编辑
{:10_266:}{:10_266:}{:10_266:}非常理解楼主的心情,当年我也是卡在这个知识点,纠结了很长时间,后来代码写得多了,才慢慢能理解。
其实这块你不理解,是因为你对面向对象的思维理解的不是很透彻。
我看到楼主定义了两个类,一个是手机卡,一个是手机。
手机卡里包含手机号,所以你在手机卡里定义了一个long类型的手机号的变量。
手机里包含手机卡,也就是说你要设置一个可以放手机卡的卡槽,你发现前面定义手机卡的时候设置手机号可以用long类型,这是java自带的一个类型,它可以用来存一串数字,但是现在手机需要手机卡类型,你需要的是一个存手机卡的类型,所以你得用你自定义的手机卡类进行引用,构建出一个抽象完整的的组合。
好了,现在类与类之前的关系你已经理解了并且抽象组合好了,现在你需要创建一台手机。
然后你用new关键字创建了一台手机,现在你想要给这台手机插上手机卡,然后发现你并没有具体的手机卡,也就是手机卡对象,
这时候你不得不又用new关键字创建一个手机卡,并且你还得给手机卡设置一个手机号,也就是给手机卡里的手机号赋值。
现在你有了一台手机,并且手机卡也有了,然后你需要把手机卡插到手机的卡槽里了。
怎么插呢?手机卡你是这么给它定义手机号,SIM(long number)
{
this.number = number;
}那么手机就也是这么给它插手机卡,也就是你不理解的
void setSIM(SIM card)
{
sim = card;
}你会发现括号里的(SIM card)跟(long number)意义是一样的,而sim = card;和 this.number = number;也是一样的,即把右边的值赋值到左边,左边变量就是你当前的手机类里的手机卡变量。
其实很多时候不用太过于纠结为啥可以去这么实现,你只要记住这个实现方式它可以完成这个设计,重要的是编程思想,代码实现方式它只是我们的java之父定义的一个规则约定而已。 代码敲多了就能慢慢悟到了,面向对象的思维非两三年的编码经验不能悟得。没啥好纠结的,多敲代码就行了。
页:
[1]
2