static
共享时使用
静态变量
static表示静态,是java的一个修饰符,可以修饰成员方法,成员变量
静态变量是随着类的加载而加载的,优先于对象出现的
静态方法
- Javabean类 用来描述一类事物的类
- 测试类 用来检查其他类是否书写正确
- 工具类 不是用来描述事物,私有化构造方法,不需要创造对象,方法定义为静态
private ArrayUtil(){//注意命名规范
}
public static String printArr(int[] arr){
StringBuilder sb=new StringBuilder();
sb.append("[");
for (int i = 0; i < arr.length; i++) {
if(i==arr.length-1){
sb.append(arr[i]);
}else{
sb.append(arr[i]).append(",");
}
}
静态方法中没有this关键字
静态方法中只能访问静态变量和静态方法
非静态方法可以访问所有,默认有this
main方法
继承
extends:一个类和另一个类建立起继承关系
public class 子类 extends 父类{}
当类与类之间,存在相同的内容,并满足子类是父类的一种,就可以考虑使用继承,来优化代码
- 子类可以得到父类的属性和行为
- 子类可以在父类的基础上新增其他功能
继承的特点
Java只支持单继承,不支持多继承,但支持多层继承
每个类都直接或者间接继承于Object
子类只能访问父类中非私有的成员
单继承:一个子类只能继承一个父类
不支持多继承:子类不能同时继承多个父类
多层继承:子类A继承父类B,父类B可以继承父类C
子类能继承父类哪些内容
只有父类中的虚方法才能被子类继承
成员变量的访问特点
this调用 :就近原则,先在局部位置找,父类位置找,逐级往上
如果出现重名变量
super调用:直接访问父类
方法的重写
![]J0N}D(`8.png](p9-juejin.byteimg.com/tos-cn-i-k3…?)
继承结构的设计
![3XOSUG.png
构造方法的访问特点
this super使用总结
![DHWRCH9@4`$PWR@QX]WCIP3.png](p6-juejin.byteimg.com/tos-cn-i-k3…?)
访问本类构造方法:
![RACYU_TMH)U7O_ETAO~VJP.png
多态
![[V]~J2J%HN0()Q5JBS_LL]X.png](p6-juejin.byteimg.com/tos-cn-i-k3…?)
调用成员的方法
变量调用:编译看左边,运行看左边
在子类的对象中,会把父类的成员变量也继承下
方法调用:编译看左边,运行看右边
如果子类对方法进行了重写,那么在虚方法表中会把父类的方法进行覆盖
编译看左边:java编译代码时,会看左边的父类有没有这个方法,如果有,编译成功,否则失败
运行看右边:运行代码时,实际上运行了类中的方法
多态的优势与弊端
包
![1FSME4RQ0AE]KY73AH5Q6SR.png](p9-juejin.byteimg.com/tos-cn-i-k3…?)
final
常量记录的数据是不可变的
- 方法:表明该方法是最终方法,不能被重写
- 类:表明该类是最终类,不能被继承
- 变量:叫做常量,只能赋值一次
![0M9R1~DK]T{4PK_$KPN%AG.png
权限修饰符
局部代码块
多个构造方法有重复代码时
![Q)DAH(FYK%BPJ~7$GAW
]F3D.png](p1-juejin.byteimg.com/tos-cn-i-k3…?)
![E`R0{7C1]YK4NE0MCFX@8T4.png](p6-juejin.byteimg.com/tos-cn-i-k3…?)
抽象类
如果类创建对象(实例化)没有意义,则抽象它