Java面向对象:代码块,方法
代码块
在Java中,使用{}括起来的代码称为代码块。
根据其位置和声明的不同,可以分为构造代码块,静态代码块,局部代码块,同步代码块。
局部代码块
在方法中部出现:限定变量生命周期,及早释放,提高内存利用率。
构造代码块
在类中方法外出现:多个构造方法中相同的代码存放到在一起,每次调用构造都执行,并且在构造方法前执行。
作用:可以把多个构造方法中的共同代码放到一起,对对象进行初始化。
静态代码块
在类中方法外出现,并加上static修饰:用于给类进行初始化,在加载的时候就执行,并且只执行一次。
作用:一般是对类进行初始化。
同步代码块
使用synchronized(){}包裹起来的代码块,在多线程环境下,对共享数据的读写操作是需要互斥进行的,否则会导致数据的不一致性。同步代码块需要写在方法中。
静态代码块,构造代码块,构造方法的执行顺序?
静态代码块>构造代码块>构造方法
静态代码块只执行一次,构造代码块每次调用构造方法都执行。
父类静态代码块>子类静态代码块>父类构造代码块>父类构造方法>子类构造代码块>子类构造方法
方法
完成特定功能的代码块。
格式
修饰符 返回值类型 方法名(参数类型 参数名1,参数类型 参数名2,...) {
方法体语句;
return 返回值;
}
参数:实际参数:就是实际参与运算的。
形式参数:就是方法定义上的,用于接收实际参数。
返回值:功能的结果,由return带给调用者,只能有一个返回值。
参数传递
值传递:传递的是具体的值。
引用传递:传递的是内存地址。
当传递基本数据类型时,形参的改变不影响实参。当传递引用数据类型时,形参的改变直接影响实参。
调用
单独调用
输出调用:System.out.println(方法名(实参名1,实参名2,...));
赋值调用:返回值类型 变量 = 方法名(实参名1,实参名2,...);
方法重载
在同一类中,方法名相同,形参的个数或类型不同。
方法重写
方法重写的前提,存在继承关系,对父类方法进行重写。
方法重写时,子类的方法名与形参列表必须和父类一致。
方法重写时,子类的返回值类型必须要小于或者等于父类的返回值类型。
方法重写时,子类的权限修饰符必须要大于或者等于父类的权限修饰符。
方法重写时,子类抛出的异常类型要小于或者等于父类抛出的异常类型。
权限修饰符
可以修饰:类,构造方法,成员变量,成员方法
不可以修饰:局部变量
访问权限从小到大
private:私有的
default:默认的
protected:受保护的
public:共有的
修饰符
权限修饰符:private,default,protected,public
状态修饰符:static,final
抽象修饰符:abstract