《疯狂JAVA》读书笔记-第五章面向对象(上)

本章要点:定义类、成员变量、方法、方法重载、继承、多态、static关键字、静态代码块等

  1. 类和对象,类是对象的抽象,对象是类的具体实现

  2. 类(可用public、final和abstract修饰)包含常见成员:构造器、成员变量和方法

    • 构造器:创建对象的根本途径,每个类都有一个默认无参的构造器(隐式返回该类实例)
    • 成员变量:可用public、protected、private、static和final修饰
    • 方法:可用public、protected、private、static、final和abstract修饰,但final和abstract只能出现其一
  3. static关键字:被static修饰的方法和变量是属于类本身,称类方法和类变量,而非static的是实例方法和实例变量,静态成员不能直接访问非静态成员。

  4. 对象、引用和指针

    Persion p = new Persion();

    p.name="李刚";

    p.age=18;

    Persion p2 = p;

1554736290688

  1. 方法详解

    • 必须在类内定义
    • 参数的传递为值传递,注意情况:当参数为引用类型时,方法内复制的对象变量和方法外的变量指向同一个堆内存变量
    • 形参参数可变:参数类型后跟三个点(…),test(String … books)。且该参数只能是方法最后一个
    • 方法重载:两同一不同(同一类同名方法,不同参数列表)。与方法的返回类型和修饰无关,注意参数是可变长度参数的重载,一般不建议重载此情况,有碍代码可读性
  2. 成员变量(实例变量、类变量)和局部变量(形参、方法内的局部变量和代码块定义的局部变量)

    • 类变量可以被所有该类的实例变量访问,且都是指向同一内存区
    • 局部变量:除形参外,必须显式初始化(赋初始值),否则报错
  3. 隐藏和封装

    • 访问控制符:private(类内) > protected(子类) > default(同一包下) > public
    • java的package,相当于命名空间,区分相同类文件。用import导入不同包的类
  4. 深入构造器

    • 调用构造器之前,类的实例对象已经被创建(分配了内存空间)
    • 构造器重载
  5. 类的继承

    • 方法重写(覆盖):两同两小一大:方法名和参数列表相同,子类的异常要比父类的异常更小或相等,子类返回的类型要比父类更小或相等,子类的方法访问级别要比父类大或相等。
    • 父类构造器:若不显式调用,默认调用是父类的无参构造器
  6. 多态:java引用变量分两类型:编译时类型和运行时类型。编译型由于声明变量时的类型决定,而运行时则由于实际赋予该变量的对象决定。当编译时和运行时类型不一致时,就称为多态。

    • 只能调用声明该变量时所用的类包含的方法,而不能调用它运行类型的方法。
  7. 代码块

    • 顶级类静态代码块–>父类静态代码块–>子类静态代码块(第一次创建对象时)–>普通代码块–>构造器
    • 普通初始定义变量和普通代码块是一样的,按先后顺序(静态代码块和静态变量也一样)
打赏
  • 版权声明: 本博客所有文章除特别声明外,均采用 Apache License 2.0 许可协议。转载请注明出处!
  • © 2015-2020 谭家俊
  • Powered by Hexo Theme Ayer
  • PV: UV:

请我喝杯咖啡吧~

微信