Java面向对象进阶

83 阅读1分钟

static

共享时使用

静态变量

static表示静态,是java的一个修饰符,可以修饰成员方法,成员变量

静态变量是随着类的加载而加载的,优先于对象出现的

H{3M$4TNF73KG`@V0KH~MVQ.png

YXH~MGLO2B}TZNHVIQW56ZB.png

静态方法

IMCH(4{FXNA_HD}GVSZ%}SB.png

  • 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方法

[XR64BOTL`5(XB_YM]$ZL{C.png

继承

extends:一个类和另一个类建立起继承关系

public class 子类 extends 父类{}

当类与类之间,存在相同的内容,并满足子类是父类的一种,就可以考虑使用继承,来优化代码

  • 子类可以得到父类的属性和行为
  • 子类可以在父类的基础上新增其他功能

继承的特点

Java只支持单继承,不支持多继承,但支持多层继承

每个类都直接或者间接继承于Object

子类只能访问父类中非私有的成员

单继承:一个子类只能继承一个父类

不支持多继承:子类不能同时继承多个父类

多层继承:子类A继承父类B,父类B可以继承父类C

子类能继承父类哪些内容

54M7VRQRSO~_Q_QY)~[X1.png

只有父类中的虚方法才能被子类继承

RU{)$ZOGYJM`%_8[3{~E}]1.png

成员变量的访问特点

this调用 :就近原则,先在局部位置找,父类位置找,逐级往上

如果出现重名变量

super调用:直接访问父类

19$_YZM9}0_ZLBBTNX(XV46.png

方法的重写

![J9XTBC[UFGJ9XTB`C[U`FG]J0N}D(`8.png](p9-juejin.byteimg.com/tos-cn-i-k3…?)

53QZ}M2}`DC7$)WA{__DTPA.png

9LDBMZN9W2%VP~QEPQV8728.png

继承结构的设计

![36WW]VIQ663BL_6WW]`VIQ663BLXOSUG.png

构造方法的访问特点

K6MTZWCZBH)%E%EW6O7QEG0.png

5~IIWB}U60%NK((})RIHV.png

this super使用总结

![DHWRCH9@4`$PWR@QX]WCIP3.png](p6-juejin.byteimg.com/tos-cn-i-k3…?)

访问本类构造方法:

![RACYU_TMH)U7O_ETAO~VJP.png

多态

![2K%@)9Q`93Y$7(AGS%153I.png

![[V]~J2J%HN0()Q5JBS_LL]X.png](p6-juejin.byteimg.com/tos-cn-i-k3…?)

调用成员的方法

变量调用:编译看左边,运行看左边

在子类的对象中,会把父类的成员变量也继承下

方法调用:编译看左边,运行看右边

如果子类对方法进行了重写,那么在虚方法表中会把父类的方法进行覆盖

编译看左边:java编译代码时,会看左边的父类有没有这个方法,如果有,编译成功,否则失败

运行看右边:运行代码时,实际上运行了类中的方法

TILABWPF(3FN[RJDSVDIM]G.png

1~{YNB0}N59}CBN)BNCTH.png

多态的优势与弊端

@((OS}}{6ZRPXWN1H~PI0.png

![1FSME4RQ0AE]KY73AH5Q6SR.png](p9-juejin.byteimg.com/tos-cn-i-k3…?)

P426~VM1TKF62EJ6US90`WM.png

final

常量记录的数据是不可变的

  • 方法:表明该方法是最终方法,不能被重写
  • 类:表明该类是最终类,不能被继承
  • 变量:叫做常量,只能赋值一次

C%EB@@Y4F@2Y1NM(@22B(T4.png

![0M9R1~DK]T{4PK_$KPN%AG.png

权限修饰符

UD~~T7KB1@HL9KTG9VHNX5D.png

JU3BRODUP5OYN)%0CW9I6`8.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…?)

抽象类

如果类创建对象(实例化)没有意义,则抽象它

CQ}68~J1HIASJW7@5LP_TY3.png

MQEHG6%0KPRB06LFM{2BIRA.png