8.5 方法
属性用来描述对象,方法则是对象的动作、行为或者功能等。方法的调用,必须要有对象。
方法是定义在类里面的非static函数,在java世界里,所有函数都是定义在类里面的。在此学习平台,提到方法就是函数,也称为成员函数,这三者不加区分,是同义的。我们前面学习的函数,都带有static关键字,实际上都是静态方法,关于静态方法,后面会有详细介绍。以下所说的方法都是不带static的(非静态)方法。
这一节,我们主要来学习非静态函数。首先来看看这段代码:
public class Student{ String name; String id; String clazz; public void printName(){ System.out.println("名字是:"+name); }}
Student类有三个属性:name、id和clazz,还有一个无参数的函数printName,这个函数打印一句话(注意printName读取了属性name的值)。 假如定义了一个对象stu,那么就可以通过stu调用printName这个方法。
public class Student{ String name; String id; String clazz; public void printName(){ System.out.println("名字是:"+name); } public static void main(String[]args){ Student stu=new Student(); stu.name="上官二狗"; stu.printName(); Student stu1=new Student(); stu1.name="东方"; stu1.printName(); }}
stu.printName的意义就是stu的printName这个功能被调用,就好像电视遥控器的换台功能。我们不可能脱离电视机提高音量,在此,也不能脱离Student对象调用printName。
和普通函数不同的是,成员函数(也就是方法)的调用必须有对象。
printName()虽然是没有参数的,但是调用它需要对象,需要使用对象的name属性,哪个对象调用,就使用哪个对象的name属性。
在第一节所阐述的:类的行为是这个事物的功能或动作。类的行为就是方法,printName这个方法,就属于Student类的一个功能。
方法可以使用对象的所有属性。
通过对象调用方法,就是这个对象的行为和功能,而方法的调用,必定需要一个对象,否则这是谁的功能?谁的行为?方法内部使用的又是谁的属性?
stu.printName()这样的写法,意思就是使用stu的printName功能,必须要有对象
。
这和之前函数的调用有所不同,因为之前的函数调用全部都是静态的,并不需要对象。
再来看一个例子,这是一个玩具车类:
public class ToyCar{ String name; double kilo; double length; String color; String style; double v; public void start(){ System.out.println(name+"开车!"); } public void stop(){ System.out.println(name+"停车!"); v=0; } public void turnLeft(){ System.out.println("左转!"); } public void turnRight(){ System.out.println("右转!"); } public void backup(){ System.out.println("倒车!"); } public void accelerate(){ v=v+1; System.out.println(name+"加速!现在速度是"+v); }}
它有许多的方法,里面只有一句打印。这些方法就是车的动作,可以这样使用这个类:
public static void main(String[]args){ ToyCar car=new ToyCar(); car.name="征服者"; car.start(); car.turnLeft(); car.accelerate(); car.stop();}
方法就是动作,就是功能。