Java进阶01-封装、继承与多态

面向对象编程的优势:

  • 模块化编程,使维护和修改更加容易
  • 代码重用
  • 提高代码的可靠性以及灵活性
  • 提高代码可读性

面向对象的程序设计有三大特征:封装、继承、多态

1、封装性

封装性有两重含义,一是指把对象的属性和行为看成一个密不可分的整体,将这两者“封装”到一个不可分割的对象中;二是指对信息的隐蔽,尽可能隐蔽对象的功能实现细节。
封装机制的另一个特点就是为封装在一个整体内的变量及方法规定不同等级的“可见性”或访问权限。

封装的好处:
1)良好的封装能够减少耦合
2)类内部的结构可以自由修改。
3)可以对成员进行更精确的控制。
4)隐藏信息,实现细节。

2、继承性

继承是为了重用父类代码。两个类若存在is-a 的关系就可以使用继承.
复用代码是 Java 众多引人注目的功能之一,注意,这里是“复用代码”而非“复制代码”

1、子类拥有父类非 private 的属性和方法。(但继承不了构造器,只能通过super()调用构造器)
2、子类可以拥有自己属性和方法,即子类可以对父类进行扩展。
3、子类可以用自己的方式实现父类的方法。(以后介绍)。

继承的好处:
1)增强了代码的可复用性
2)提高了软件开发的效率
3)降低了程序产生错误的可能性
4)为程序的修改提供了便利

继承的缺陷:
1)父类变,子类就必须变。
2)继承破坏了封装,对于父类而言,它的实现细节对与子类来说都是透明的。
3)继承是一种强耦合关系。
注:java语言不支持多继承,但可以通过接口(interface)的方式来弥补由于java不支持多继承而带来的子类不能享用多个父类的成员的缺点。

3、多态性

多态是以封装和继承为基础,在抽象的层面上实施一个统一的行为,相同的事物,调用其相同的方法,参数也相同时,但表现的行为却不同。

Java 实现多态有三个必要条件:
1)存在继承关系
2)子类重写父类的方法。子类重写了父类的方法,调用父类的方法,实际调用的是子类重写了的父类的该方法。即Father f = new Children(),f.toString()实际上调用的是Children中的toString()方法。
3)父类引用指向子类对象

多态的分类:
1)编译时多态,即方法的重载,从JVM的角度来讲,这是一种静态分派(static dispatch)
2)运行时多态,即方法的重写,从JVM的角度来讲,这是一种动态分派(dynamic dispatch)

多态的原则:
比如我们有一个父类Father,有一个子类Children
1、向上转型是自动的。即Father f = new Children()是自动的,不需要强转
2、向下转型要强转。即Children c = new Father()是无法编译通过的,必须要Children c = (Children)new Father(),让父类知道它要转成具体哪个子类。

一个多态的经典实例:多态示例

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值