阅读本文约“2分钟”segmentfault
对象的行为,这里的对象即上一章中的类吧(浅意)多线程
状态影响行为,行为影响状态!线程
这是一个使人深思的话题了。设计
同一类型的每一个对象可以有不一样的方法行为吗?code
仔细想一下实际上是能够的,任一类的每一个实例都带有相同的方法,可是方法能够根据实例变量的值来表现不一样的行为。对象
这里举例来讲的话,Song这个类有两个实例变量,而play()方法会播放其中一个实例变量指定的歌曲名。但其方法是相同的。内存
void play(){ System.out.println(title); } //main Song song = new Song(); song.setTitle("同一首歌"); song.setArtist("Myself"); Song song1 = new Song(); song1.setTitle("你的微笑"); song1.setArtist("MySelf");
因为不一样的程序设计背景和我的喜爱,你可能会用实参或形参来调用传给方法的参数。get
方法会运用形参,调用的一方会传入实参。编译器
重点是:若是某个方法须要参数,你就必定得传东西给他,那个东西得是适当类型的值。it
且若是你将一个方法声明有返回值,你就必须返回所声明类型的值。
固然,若是你有用过一些成熟的编译器,他们也会主动拒绝你返回错误的类型。
方法是能够传入多个参数的,若是方法有参数,你必定要以正确数量、类型和顺序来传递参数。
Java是经过值传递的,也就是说经过拷贝传递。
//声明一个int类型的变量并赋值为7,表明7的字节组合会放进 //称为x的变量中。 int x = 7; //声明一个有int参数的方法,参数名称为z void go(int z){ } //以x为参数传入go()这个方法,x的字节组合会被拷贝并装 //进z中 foo.go( x ); //在方法中改变z的值,此时的x的值不会改变! //传入z的只是一个拷贝 //方法没法改变调用方所传入的参数 void go ( int z ){ z = 0; }
这里有一些要点须要你注意!
——类定义对象所知及所为
——对象所知是实例变量
——对象所为者是方法
——方法可依据实例变量来展示不一样的行为
——方法可以使用参数,这表明你能够传入一个或多个值的方法
——传给方法的参数必须符合声明时的数量、顺序及类型
——传入与传出方法的值类型能够隐含地放大或明确地缩小
——方法必须声明返回类型,使用void类型表明方法不返回任何东西
——若是方法声明了非void的返回类型,那就必定要返回与声明类型相同的值。
本文已转载我的技术公众号:UncleCatMySelf
欢迎留言讨论与点赞
上一篇推荐:【Java猫说】Java多线程以内存可见性(下篇)
下一篇推荐:【Java猫说】关于Java方法及传参的一些问题