定义: 将能够实现某种特定功能的代码块进行封装。
方法的好处:
- 提高维护效率。
提高了代码的复用性。
语法:public static 返回值类型 方法名(参数列表){ 方法体; }
解析:返回值类型:根据方法体需要返回什么类型就返回什么类型,在方法体中需要使用return关键字进行操作,如果没有返回值用关键字void来进行操作。
方法名:遵循驼峰命名法即可
参数列表:根据需要书写参数
方法使用的注意事项:
- 在方法中不能声明方法但是可以调用方法
- 在一个类中可以声明多个方法名相同的方法但是要注意参数列表的个数不能相同或者参数列表的类型不同。这种情况称为方法的重载。
重载与重写的区别
重载:方法名相同,参数列表或参数类型不同
重写:方法名相同,参数列表和参数类型都相同,只有方法体不同,且只能发生在继承关系中
方法的传参机制:值传递
- 1、形参: 方法的小括号内的参数
- 2、实参: 方法调用时传给形参的数据
值传递机制
- 基本数据类型: 实参赋值给形参的是真实存储的数据。相当于赋值副本,对副本的改变不影响原本的值
- 引用数据类型: 实参赋值给形参的是地址值,变量指向同一的堆内存空间,改变会影响原本数据
重写:
方法名相同,参数列表和参数类型都相同,只有方法体不同,且只能发生在继承关系中。即外壳不变,核心重写!
可以用:@Override
标识符来检测重写父类的方法是否正确
子类重写父类方法,子类重写的权限修饰符不能比父类小。
- 特殊情况:子类不能重写父类中声明为private权限的方法
- 子类重写的方法的方法名和形参列表与父类被重写的方法的方法名和形参列表相同.
返回值类型:
- 父类被重写的方法的返回值类型是void,则子类重写的方法的返回值类型只能是void
- 父类被重写的方法的返回值类型是A类型,则子类重写的方法的返回值类型可以是A类或A类的子类
- 父类被重写的方法的返回值类型是基本数据类型(比如:double),则子类重写的方法的返回值类型必须是相同的基本数据类型(必须也是double)
- 子类重写的方法抛出的异常类型不大于父类被重写的方法抛出的异常类型(具体放到异常处理时候讲)
声明为 final
的方法不能被重写。(final
可以把类定义为不能继承的,即最终类;或者用于修饰方法,该方法不能被子类重写:)
声明为 static
的方法不能被重写,但是能够被再次声明。
重载:
- 每个重载的方法(或者构造函数)都必须有一个独一无二的参数类型列表。
- 无法以:返回值类型、方法体、权限修饰作为重载函数的区分标准。
- 方法能够在同一个类中或者在一个子类中被重载。
public String test(int a,String s){
}
//注意重载的参数类型顺序
public String test(String s,int a){
}
权限修饰符(访问控制符)
Java中,可以使用访问控制符来保护对类、变量、方法和构造方法的访问。Java 支持 4 种不同的访问权限。
default (即默认,什么也不写): 在同一包内可见,不使用任何修饰符。使用对象:类、接口、变量、方法。
private : 在同一类内可见。使用对象:变量、方法。 注意:不能修饰类(外部类)
public : 对所有类可见。使用对象:类、接口、变量、方法
protected : 对同一包内的类和所有子类可见。使用对象:变量、方法。 注意:不能修饰类(外部类)。
如下图: