OOP

面对对象

面对对象的一些标准

  1. 考虑可复用和可修改性
  2. 继承
  3. 多态:一会是父类一会是子类
  4. 动态调度/绑定

有关对象:

  • 对象是一组状态和行为
  • 状态:通过数据来表示
  • 行为:通过方法实现

在JAVA中,一个类是这样的
在这里插入图片描述
静态与实例:
在这里插入图片描述
静态方法不与类的任何特定实例关联,所以,静态方法不能调用非静态成员与方法(需要实例化)

接口

在这里插入图片描述

  • Java中接口是一个记号,而不是方法本体
  • 接口被声明它的类实现
  • 一个接口可以扩展(extend)其他接口
  • 一个类可以实现多个接口

接口不能有构造函数,不过我们可以使用一个静态的隐式构造函数
在这里插入图片描述
使用接口的好处有:

  • 调用者理解ADT时只需要理解接口即可
  • 方便不同实现可
  • 避免客户机不能在ADT的表示上无意间创建依赖项,因为实例变量根本不能放在接口中
  • 抽象数据类型的多个不同表示可以共存于同一个程序中,作为实现接口的不同类

那么多次实现的好处在于?

  • 有不同性能
  • 提供不同行为

封装与信息隐藏

信息隐藏
好的设计通常会隐藏其内部实现细节以及内部数据,API实现分离,模块间只通过API通讯。

  • 分离组成系统的类

    • 允许开发、测试、优化、使用、理解和单独修改
  • 加快系统开发

    • 可以并行开发类
  • 减轻维护负担

    • 可以更快地理解课程并调试,而无需担心伤害其他模块
  • 实现有效的性能调整

    • “热”类可以单独优化
  • 增加软件复用性

    • 低耦合类通常在其他上下文中被证明是有用的

显然,使用接口可以很好地满足以上问题。

对于普通类,为了防止泄露,修饰符的重要性就体现出来了:
在这里插入图片描述

继承与重写

重写:子类重新实现父类中的方法,根据调用时的对象类型决定被调用方法的版本(java不支持多重继承的好处)

在默认情况下父类中的方法均是可被重写的,但是可以用final来限制重载.
子类中可以通过super关键字调用父类中被重写的方法

重写需要保证的是:

  • 签名保持一致
  • 使用@Override(这样IDE会帮你检测)
  • 限制符可以增加但是不能减少

抽象类:是有抽象函数的类
抽象类不能实例化,且继承某个抽象类的子类在实例化时,所有父类中的抽象方法必须已经实现

多态

多态性是指为不同类型的实体提供一个接口,或者使用一个符号来表示多个不同的类型
包括:

  • 一个函数可以有多个同名的实现(方法重载)
  • 一个类型名字可以代表多个类型(泛型编程)
  • 一个变量名字可以代表多个类的实例(子类型)

重载:重载是指在一个类中存在多个同名函数,必须具有不同的参数列表,返回值类型可同可不同

与重写的区别
在这里插入图片描述

泛型

在这里插入图片描述

泛型类是指类中如果声明了一个或多个泛型变量,则为泛型类。泛型类/接口,是在实例化类的时候指明泛型的具体类型(类型擦除);
泛型方法,是在调用方法的时候指明泛型的具体类型

在这里插入图片描述
在这里插入图片描述

静态方法不能使用所在泛型类定义的泛型变量,如果静态方法要使用泛型的话,必须将静态方法也定义成泛型方法

继承与子类

Java中的子类型一定要确保其规格说明不弱于超类型
客户端可以对不同类型的对象使用统一的方式进行处理(处理超类型)

类型强转:
避免向下类型转换

instanceof操作符可以用来检测类名相同否

Java Object中的一些函数

  • equals() – true if the two objects are “equal”
  • hashCode() – a hash code for use in hash maps
  • toString() – a printable string representation
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值