Java课程复习之面向对象(中)

Java课程复习之面向对象(中)

一、面向对象的特征

  • 封装
  • 继承
  • 多态

二、封装

1.封装

  • 通过访问控制实现,信息隐藏
  • 访问权限控制符
    public 公共访问权限
    protected 包访问权限、继承访问权限
    无访问控制符修饰 包访问权限
    private 类内部访问权限
    权限从小到大:private->无访问控制符->protected->public
  • 修饰符可用于:修饰类、修饰类的属性成员、修饰类的成员方法
  • protected属性具有包访问权限,可以被同一包中的所有类访问
  • 不能通过对象引用来访问不在同一包的类的protected属性和方法
  • 子类的类定义中可以访问父类的protected属性和方法,不论是否在同一包
  • 访问权限首先看类前的修饰符,再看属性和方法前的修饰符

2.消息

  • 面向对象程序 = 对象 + 消息
  • 消息的实质是引用向对象发出的服务请求,是对数据成员方法的调用。
  • 引用必须引用了特定的对象,否则会在运行时抛出NullPointerException异常
  • 对象必须定义了相应的属性和方法
  • 被访问的属性或方法必须具有可访问的权限

3.类的组合

  • 类的复用方式之一,优先于继承

三、继承

1.继承

  • 通过extends关键字实现
  • 子类继承了父类的所有属性和方法,但只有public、protected的属性和方法在子类中是可见的
  • 子类可以直接访问父类的protected属性和方法
  • 子类不能直接访问父类的private属性和方法,可以调用父类的公共方法来间接访问私有属性

2.Object类

  • Object类是所有类的共同祖先
  • Object类中定义的方法都可以被所有的子类继承
  • Object类方法
    方法名说明
    Class getClass()获得当前对象的类对象
    String toString()得到代表这个对象的字符串
    Object clone()将当前对象克隆,默认是浅拷贝
    void finalize()对象被释放时使用,已弃用
    int hashCode()得到代表对象的一个整数,这个整数在应用程序运行时保持不变
    Boolen equals(Object obj)判断两个引用是否指向同一对象,其参数不能为普通数据类型
    void notify用于线程同步中唤醒等待的线程
    void wait()应用于线程同步中的线程等待

四、多态

1.定义

  • 多态是指一个程序中同名的不同方法共存的情况
  • Java提供两种多态的机制:重载和覆写

2.重载

  • 方法名称相同,参数类型或个数不同
  • 编译器视角:方法签名=方法名称+参数类型+参数个数 组成成唯一键
  • 同一个类中通常提供多个重载方法

3.覆写

  • 子类对父类的同名方法(方法名称相同,参数相同,返回类型相同)重新进行定义,即在子类中定义与父类中已定义的同名而内容不同的方法。
  • 覆写与重载的区别:
    覆写:方法名称相同,参数类型、个数一致,子类返回类型可向上转型到父类返回类型 (类族)
    重载:方法名称相同,参数类型或个数不同 (同一个类)
  • 覆写需要满足的条件
    • 子类的访问修饰符权限应等于或大于父类,不能变小
    • 子类的返回类型能够向上转型成为父类的返回类型
    • 异常也要能向上转型为父类的异常
    • 方法名、参数类型及个数必须严格一致
    • 覆写只能针对非静态、非final、非构造方法
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值