学习日记:java——继承补充及多态

目录

一、上集回顾

二、本集目标

三、本篇正文

1、继承下的构造函数

    2、继承下的代码块

3、多态的概念

4、多态的条件(特征)

5、多态的演示:

6、向上转型

四、作者的话


一、上集回顾

    昨天我们学习了继承的相关概念及权限访问操作符的补充。学习日记:Java——继承-CSDN博客

二、本集目标

    第一个是补充昨天继承中忘记讲且比较重要的一部分。其次是学习多态的相关概念,认识并能写出简单的多态代码

三、本篇正文

1、继承下的构造函数

     当父类子类都没有构造函数的情况下,代码是正常的。

===========================   分割线   =========================

    当父类有构造函数子类没有构造函数就会报错,这是什么原因呢?会不会是子类没有构造函数造成的,我们给子类添加上构造函数试试。

??为什么给子类加了构造函数代码还报错,其实子类中除了我们自己添加的部分外还有继承父类的部分,这就意味着父类中含参的构造函数也给了子类,这个构造函数没有接收到参数自然就报错了。那么该怎么解决呢?很简单在子类的构造函数的第一行使用super关键字给它传参数。

上述是含参的构造函数,那么父类中含有无参的构造函数会怎样?

根据上图知:若父类具有无参的构造函数,子类不用super声明该构造函数也行。

    2、继承下的代码块

    还记得前天讲的代码块部分吗?三种代码块在执行上按静态代码块、实例化代码块、普通代码块的方式依次执行(详细请见:学习日记:Java类与对象2-CSDN博客)。那么在有继承关系下这些代码块会按照什么顺序执行呢?

                     

                         

根据运行结果可知,在具有继承关系下优先执行父类子类的静态化代码块,再执行父类的实例化代码块、构造代码块,最后执行子类的实例化代码块、构造代码块。

                

                    

多次执行则静态代码块部分只运行一次,其余代码块照常。

3、多态的概念

    简单来说就是同一件事不同的人干的结果不同。比如吃饭,饭量小的人吃的少些,饭量大的人吃的多些。

4、多态的条件(特征)

<1>、具有一父多子的继承体系。

<2>、子类对父类中的方法重写 

<3>、通过对父类的引用进行重写

一父多子的继承体系很好理解,多个子类继承同一个父类即可。

 子类对父类中的方法进行重写是什么鬼?子类我懂,父类我懂,方法我懂,重写是啥没听说过啊,重载倒是听说过。

重载中方法间的返回值类型、参数类型、参数数量、参数顺序不一样,方法名一样。重写则要求返回值类型、参数类型、参数数量、参数顺序、方法名一样,在运行过程中用子类方法的结果代替父类方法的结果。

另要注意:1.重写时子类对该方法访问权限要大于等于父类对该方法访问权限   2.父类中被static,private修饰的方法不能被重写

5、多态的演示:

6、向上转型

可以理解为创建一个子类将其当成父类使用。

语法格式:父类类型    +    对象名   =   new   子类类型();

但要注意的是,不能调用子类特有的方法!

四、作者的话

关于多态还有个向下转型的知识点,由于本人尚未学会如何定义、使用故没写,明天补上。

写这篇日记对我来说受益匪浅理,清了很多知识点,并能将这些知识点转换成简单的代码。强烈建议大家在学习的过程中也写写学习日记发在咱们的CSDN上,可以@我去三连。最后感谢您的观看。

  • 4
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值