面向对象——类的成员之方法
方法的定义
权限修饰符 返回值类型 方法名(参数列表){ 方法体 }如果有返回值,则是返回值数据类型;如果没有返回值,则返回值类型为void。另外在方法中的变量是局部变量,局部变量是没有默认的初始值的。而前一节中的成员变量如果不赋初值,它的值就是该数据类型的默认值 。补充:在这里特别想提出一点:关于 return的作用 和 void人们常常说有void就不能有return,但其实并不完全是这样。请看这个简单的例子:public void test(){
int a=0;
int b=10;
System.out.println(a+b);
return;//return的作用是结束这个方法的执行。
}
所以在这里说说return的作用:
1.当函数有返回值时,”return 返回值”;
2.当方法遇到某些情况,程序员想要结束这个方法时 可以用“return;”来结束这个方法,就算是该方法为void也可以,因为在这里并没有返回值。方法的调用
1.如果此方法是本类中的普通方法/静态方法,则在本类的普通方法中可以直接调用。如:findWork();
2.如果类A在类B中创建了对象aa,则调用类A中的findWork()方法就需要aa.findWork();
3.静态方法的调用方式除了第二种方式,还有一种是类名.findWork();
方法的重写与重载
重载:在同一个类中定义多个方法,这些方法方法名相同,参数列表不同。这些方法就称为方法的重载
重写:子类中有和父类“一样“的方法,一样指的是方法参数相同,形参列表相同。重写最基本条件就是要有类的继承,在继承的基础上,才能谈重写。
重写规则:两同两小一大
重载规则:方法名相同,参数列表不同
- 两同:方法名相同,参数列表相同
- 两小:异常要比父类中的方法要小或者相同
- 返回值类型要比父类中的方法小或者相同(基本类型必须相同)
- 一大:访问权限要比父类中的方法要大或者相同
- 子父类方法同为static或非static
- 不看返回值以及返回值是否相同
- 与形参名无关
- 参数列表:参数类型+参数个数
个人觉得理解重载最好的方式就是:想想调用这个方法的时候,因为调用时只要给出方法名和参数就能确定调用的方法是哪一个。所以形参名没有任何区别意义。另外关于返回值类型,调用方法时根本就不关心返回值,只关心执行的是不是想要的方法。因此只要记住核心方法名相同,形参列表不同即可。
另外关于Java的封装特性,方法的存在就是把某一个功能封装,通过调用这个方法来实现这个功能。我在最开始学Java的时候习惯性的把所有的代码都放在main函数里,这样的习惯可能很方便,但是难以阅读,后来才慢慢的对代码进行封装,形成模块。