这章主要内容讲方法,书中章节名字叫对象的行为,在之前章节中,我们描述过类是蓝图,是我们工程师的设计图,设计出一个个对象,对象又有自己的实例变量值,那么方法呢?
方法被称为对象的行为,根据不同类,有不同的方法,比如人类,我们可以给他定义一些 跑 唱 跳的方法,那么每个不同人(对象)他们都能执行这些方法。
在书中第73页定义了狗的类,定义了狗的两个属性,一个是大小,一个名字,还有一个方法,根据狗不同的大小,叫的声音也不一样,在定义了一个dog类型对象时候,对象就可以通过原点标识符,也就是英文的小数点.就可以调用对象的属性及方法。
在java学习第三天时候我写了一个例子,关灯的方法, light1.turnOff(light1); 在调用turnOff这个方法的时候,要传入对应的实参(实际参数) 比如turnOff 要求传入的是Light 类型的参数,那么调用的时候 传入的一定要是 Light类型
public void turnOff(Light L) {//谁调用关灯方法的时候 都要传关灯的对象过来,这样我才知道是哪个灯要关
L.lightNum = 0;//关闭灯了,就将灯泡的亮度变为0
System.out.println("关闭后亮度 :"+L.lightNum );
}
调用方式代码
Light light1 = new Light();
//灯1执行关灯 调用关灯方法时候将灯1这个对象传过去
light1.turnOff(light1);
整个类完整代码
class Light{
int lightNum;
public static void main (String[] args) {
//创建Light对象
Light light1 = new Light();
//灯1执行关灯 调用关灯方法时候将灯1这个对象传过去
light1.turnOff(light1);
//灯1亮度设为99
light1.lightNum = 99;
// 创建Light数组
Light [] mylight = new Light[3];
mylight[0] = new Light();
mylight[1] = new Light();
mylight[2] = light1;
// 通过数组引用存取Light
mylight[0].lightNum = 100;
mylight[1].lightNum = 50;
//把灯全关
int x = 0;
while(x<mylight.length){//数组有个length的变量,能返回元素,通常用在循环,判断
System.out.println("关闭前灯泡亮度 :"+mylight[x].lightNum );
mylight[x].turnOff(mylight[x]);
x = x+1;
}
}
public void turnOff(Light L) {//谁调用关灯方法的时候 都要传关灯的对象过来,这样我才知道是哪个灯要关
L.lightNum = 0;//关闭灯了,就将灯泡的亮度变为0
System.out.println("关闭后亮度 :"+L.lightNum );
}
}
在书中是从74-79页。而方法有些情况是需要返回的 如果将关灯方法改成有返回的那么代码如下
public int turnOff(Light L) {//谁调用关灯方法的时候 都要传关灯的对象过来,这样我才知道是哪个灯要关
return 0;//返回值为0
}
调用时候还是要对象去调用,但是返回的值要赋值给 灯的亮度
//创建Light对象
Light light1 = new Light();
//灯1执行关灯 调用关灯方法时候将灯1这个对象传过去
light1.lightNum = light1.turnOff(light1);//将返回的值赋值给灯的亮度
全部完整代码
class Light{
int lightNum;
public static void main (String[] args) {
//创建Light对象
Light light1 = new Light();
//灯1执行关灯 调用关灯方法时候将灯1这个对象传过去
light1.lightNum = light1.turnOff(light1);
System.out.println("111关闭后灯泡亮度 :"+light1.lightNum );
//灯1亮度设为99
light1.lightNum = 99;
// 创建Light数组
Light [] mylight = new Light[3];
mylight[0] = new Light();
mylight[1] = new Light();
mylight[2] = light1;
// 通过数组引用存取Light
mylight[0].lightNum = 100;
mylight[1].lightNum = 50;
//把灯全关
int x = 0;
while(x<mylight.length){//数组有个length的变量,能返回元素,通常用在循环,判断
System.out.println("关闭前灯泡亮度 :"+mylight[x].lightNum );
mylight[x].lightNum = mylight[x].turnOff(mylight[x]);
System.out.println("关闭后灯泡亮度 :"+mylight[x].lightNum );
x = x+1;
}
}
public int turnOff(Light L) {//谁调用关灯方法的时候 都要传关灯的对象过来,这样我才知道是哪个灯要关
return 0;
}
}
运行结果
有返回跟没返回的方法都介绍了,调用的时候传入的参数 称为实参,也就是实际传入的参数,而方法定义要求的参数叫做形参,这个也介绍了,不懂得书上74-79再看一遍
java面向三大特性继承我们在第一章的时候有稍微提一下,今天讲第二个特性叫 封装,书中是80-82页,在最常用的方法中数一数二的两个方法肯定是get跟set
在书中的例子里,get set是用于获取dog这个类的大小,get是为了获取大小的值,所以肯定是有返回的,size的类型是int类型,所以返回的是int类型
public int getSize(){
return size;
}
而set这个是给对象设置size,因为这个方法不需要返回,所以用void,而且要设置修改size 需要修改的大小需要由对象调用时候传入的实参来定义,所以这边要写好形参 要求是int类型 的变量名可以自己定义 不要关键字就可以,然后将变量赋值给size这样就可以改变了size
public void setSize(int s){
size = s;
}
这样就会出现下面两种情况,例如当我有个灯每次需要获取状态或者修改灯的属性的时候,我只要去get set调用就可以了,封装好了方法,多个地方都能使用,而且安全性能也高
专业的描述 :提高了代码的安全性,提高了代码的可读性和复用性
83页的数组对象的行为 看上面灯泡的循环全关的方法就是就
在85讲了一个实际变量跟局部变量,其实就两句话,实际变量是定义在类中,而局部变量是定义在方法
像我们经常在方法写的用于判断循环次数,就是局部变量也是最常用的一种方式。
第86页是变量的比较,这个看下就好了没什么要展开说的
总结下 内容有 方法的调用 方法的返回 实参 形参 封装 实际变量 局部变量。差不多到这里基本知识就讲完了,明天我们就可以开始做一个攻击舰艇的游戏。明天见