个人笔记 —— 回顾篇(面向对象知识)

Day Nine

回顾篇(面向对象知识):

继承: 类 和 类, 单继承 extends
  • 子类继承父类:

    1. 继承父类中所有可见的成员方法和成员变量
    2. 父类的构造方法不能被子类继承, 只能被子类调用
    3. 子类可以重写父类的方法
      重写的方法名和参数列表与父类中一样
      子类返回值类型 小于等于 父类的返回值类型
      子类访问权限 大于等于 父类的访问权限
  • 子类调用父类:

    super() -> 调用父类无参构造方法
    super.m1() -> 调用父类的成员方法
    super.a -> 调用父类的成员变量
    super 只能在子类中使用
    this: 指当前对象,自己

  • 静态

    stati::修饰的方法或变量属于类,通过 类名. 来调用
    static{…} -> 静态代码块, 在类加载时执行

类加载:

执行的原因:

  1. 创建类的对象
  2. 调用类的静态成员
  3. 创建子类对象, 先加载父类, 再加载子类
  4. 调用子类的静态成员, 先加载父类, 再加载子类
  5. Class.forName(String className): 手动加载
    java.lang.String java.util.ArrayList
抽象的 abstract:
  • 抽象方法: 只能存在于抽象类或者接口中

  • 抽象类: 可以用来放抽象方法
    不能实例化
    有构造方法,给子类调用的

  • final 修饰符特点:

    final class —> 不能被继承
    final void m1() —> 不能被重写
    final int a —> 不能被改变, 常量, 必须初始化
    成员变量a, 必须在创建对象时初始化(代码块,构造方法)
    final static int B —> 必须初始化, 静态常量
    类加载时, 必须初始化完成(静态代码块)

  • 常量: 使用环境: 固定几个选项时,通常类型都是int
    将选项起个名字 — 变量,final 变量
    如果常量要在外部无关类中使用, 通常为了方便, 都会定义成static

实现: 接口

抽象方法 —> 必须被实现类重写/覆盖
静态常量 —> 直接通过接口类型使用
默认方法 —> 方法本身有具体实现,故在子类中可以不被重写
静态方法 —> 直接通过接口类型使用
私有方法 —> 给默认方法提供使用

使用接口, 必须要有实现类, 同时要创建实现类的对象

  • 多态: 编译时看左边, 运行时看右边

    父类 a = new 子类();
    接口 b = new 接口实现类();
    a.m1(): 说明 m1方法 有声明在父类中
    并且子类重写了 m1方法
    编译时类型: 只在编译时有效

    泛型:< E >

    若对象 a 想要调用子类特有的方法,则需要强制转换:(子类)a. 方法
    可能会出现 ClassCastException 异常(不是正确的子类对象)
    解决方式, 提前使用 a instanceof 子类名 (判断 a 是否为该子类的对象,返回 boolean 类型)
    意义:扩展方法的功能

  • 内部类:

    • 成员内部类 —> 类中

      public class Outer{
          public class Inner{
          }
      }
      创建对象方法:
      Outer.Inner in = new Outer().new Inner()
      
    • 局部内部类 —> 方法中

      public void m1() {
          int a = 10;
          class Inner {
              // 在Inner类中使用 a, 那么 a 必须是 final 修饰的常量
          }
      }
         只在方法中可以使用, 一次性,用完就失效
      
    • 匿名内部类(局部内部类的优化)

      接口/抽象类 b = new 接口/抽象类() {
            // 真正的类, 重写抽象方法
      };
         只能创建一次对象
      
    • 静态内部类 —> 属于类的

      public class Outer{
          public static class Inner{
      
          }
      }
      创建对象方法:
      Outer.Inner in = new Outer.Inner()
      
    • 权限:

      外部类: public/(default)
      成员内部类: public/protected/(default)/private
      局部内部类: 不能使用
      方法: public/protected/(default)/private
      成员变量: public/protected/(default)/private
      局部变量: 不能使用

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值