【Java猫说】Java对象的行为

阅读本文约“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方法及传参的一些问题

相关文章
相关标签/搜索