面向对象【秦竹】

面向对象

面向对象和面向过程

面向对象:
把属性和行为封装成对象,基于对象和对象的能力进行组合解决业务问题
特点:易维护,易复用,低耦合,易扩展
面向过程:
每个步骤通过函数实现,然后依次调用;
特点:相对于面向对象新能较高;

封装

  • 隐藏对象的属性和实现细节,仅对外提交接口,控制程序中属性的修改和读取的访问级别

继承

实现方式

  • 实现继承(直接复用父类的属性和方法)
  • 接口继承(子类需要实现父类方法)

多态

一种形式的多种表现形态
实现多态需要满足的三个条件:
1.实现继承关系;
2.子类重写父类方法;
3.父类引用指向子类对象;

重写

  • 需要通过继承关系来实现(如果一个方法不能被继承,则它不能被重写);
  • 参数列表必须相同;
  • 访问级别必须必被重写的方法低;
  • 重写方法能够抛出更有限的异常;
  • 不能重写被final修饰的方法;

重载

1.被重载的方法必须改变参数列表;
2.被重载的方法可以改变返回类型;
3.被重载的方法可以改变访问修饰符;
4.被重载的方法可以声明新的或更广的检查异常;
5.方法能够在同一个类中或在一个子类中被重载;

重写vs重载

  • 重载对于编译期概念,重写对应运行期概念;
  • 重载是“编译期绑定”,即在调用方法时根据入参类型可以确定调用的方法;
  • 重写时“运行期概念”,即需要等到程序运行时,调用父类引用指向的方法;
  • 由上面三条可知,重仔不是多态,重写时多态;

面向对象五大基本原则

1.开发封闭原则:对扩展开发,对修改关闭;
2.替换原则:子类必须可以替换父类;
3.单一职责原则:一个类做好只做一件事,只有一个引起他变化的原因;
4.依赖倒置原则:具体依赖于抽象,抽象不依赖具体,高层模块不依赖于底层模块,依赖于抽象
5.接口隔离原则:使用多个小的专门的接口,而不用大的接口(分散开来)

继承与实现

继承:如果多个类有共同的部分,则抽离出公共的部分,放入到父类中,让其他的类都来继承该父类[复用]
实现:如果多个类处理的目标一致,但是各种的实现方式不同,则定义一个接口,也就是一个标准,让其他类都来继承,然后各种实现完成目标的方法;[定义标准]
继承:

  • extend
  • 一个类只能继承一个父类
  • 可以定义方法,变量,常量
    实现:
  • implement;
  • 一个类可以实现多个接口;
  • 接口中只能定义常量和未实现的方法(java8以后可以定义默认方法defult)

继承和组合

组合关系继承关系
优点:不破坏封装,整体和局部低耦合缺点:破坏封装,子类和父类之间,子类依赖父类
优点:具有较好的可扩展性、、、
优点:支持动态组合,整体对象可以选择不同的局部对象进行组合、、、
优点:整体类可以对局部类进行包装, 封装局部类的接口,提供新的接口缺点:子类不能改变父类的接口
整体类不能自动获得和局部类同 样的接口优点:子类能自动继承父类的接口
缺点:创建整体类的对象时,需要创建 所有局部类的对象优点:创建子类的对象时,无须创 建父类的对象
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值