【无标题】面向对象程序设计(OOP)之继承

//2021.01.20

面向对象程序设计(OOP),其本质是以建立模型体现出来的抽象思维过程和面向对象的方法。类是对现实世界的抽象,包括表示静态属性的数据和对数据的操作,对象是类的实例化。对象间通过消息传递相互通信,来模拟现实世界中不同实体间的联系。在面向对象的程序设计中,对象是组成程序的基本模块。

本次仅就其“继承”相关的部分内容进行学习

  1. 什么是继承

继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为。

生活中的继承:

兔子和羊属于食草动物类,狮子和豹属于食肉动物类。

食草动物和食肉动物又是属于动物类。

所以继承需要符合的关系是:is-a,父类更通用,子类更具体。

虽然食草动物和食肉动物都是属于动物,但是两者的属性和行为上有差别,所以子类会具有父类的一般特性也会具有自身的特性。

2.继承的基本格式(如何写)

这里要使用到继承的关键字“extends”

一般写法为:

class 父类 { }

class 子类 extends 父类 { }

举例:

3.继承的作用

最为直观的作用就是减少了代码的重复。

反过来说,如果有多个类,其中的代码存在重复,那会很容易导致代码量大且臃肿,而且维护性不高(维护性主要是后期需要修改的时候,就需要修改很多的代码,容易出错) ,所以要从根本上解决这多段代码的问题,就需要继承,将多段代码中相同的部分提取出来组成一个父类。父类当中的属性和方法,子类就不会存在重复的代码,维护性也提高,代码也更加简洁,提高代码的复用性(复用性主要是可以多次使用,不用再多次写同样的代码)。

例如:原本有两段代码(狮子类和老虎类)

可抽象出一个父类“动物”:

4.继承的特性

所有类默认继承Object

子类可以拥有自己的属性和方法,即子类可以对父类进行扩展。

子类可以用自己的方式实现父类的方法。(重写)

Java 的继承是单继承,但是可以多重继承,单继承就是一个子类只能继承一个父类,多重继承就是,例如 B 类继承 A 类,C 类继承 B 类,所以按照关系就是 B 类是 C 类的父类,A 类是 B 类的父类。

5.Super关键字和重写

可以通过super关键字来实现对父类成员的访问,用来引用当前对象的父类。

重写是子类对父类的允许访问的方法的实现过程进行重新编写, 返回值和形参都不能改变。即外壳不变,核心重写!

重写的好处在于子类可以根据需要,定义特定于自己的行为。 也就是说子类能够根据需要实现父类的方法。

举例:

6.访问修饰符

private : 在同一类内可见。使用对象:变量、方法。 注意:不能修饰类(外部类)

default (即缺省,什么也不写,不使用任何关键字): 在同一包内可见,不使用任何修饰符。使用对象:类、接口、变量、方法。

protected : 对同一包内的类和所有子类可见。使用对象:变量、方法。 注意:不能修饰类(外部类)。

public : 对所有类可见。使用对象:类、接口、变量、方法

7.自动转型和强制转型

自动(向上)转型:

例如:有一个父类A,子类B继承父类A,有一方法C(A a),其数据类型要求是A。

               当程序中出现C (B)时,子类B会自动转型为A类。

        也可以自己手动转型:

             A x=new B();

当调用x的方法时,首先在A类(父类)中寻找,若B类(子类)中重写了,则按子类中的执行。但如果A类中无该方法,B类中有,无法执行。

强制转型:

        前提:已经自动转型

        其书写格式:B y=(B) x;

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值