首页 > 其他分享 >第六章 面向对象进阶——6-3 继承

第六章 面向对象进阶——6-3 继承

时间:2024-04-04 23:13:44浏览次数:17  
标签:重写 进阶 构造方法 子类 面向对象 第六章 抽象类 父类 方法

一,构造方法: this(…) - 访问本类构造方法 super(…) - 访问父类构造方法   二, 继承中构造方法的访问特点(理解) 注意:子类中所有的构造方法默认都会访问父类中无参的构造方法 子类会继承父类中的数据,可能还会使用父类的数据。所以,子类初始化之前,一定要先完成父类数据的初始化, 原因在于,每一个子类构造方法的第一条语句默认都是:super() 问题:如果父类中没有无参构造方法,只有带参构造方法,该怎么办呢? 1. 通过使用super关键字去显示的调用父类的带参构造方法 2. 子类通过this去调用本类的其他构造方法,本类其他构造方法再通过super去手动调用父类的带参的构造方法 注意: this(…)super(…) 必须放在构造方法的第一行有效语句,并且二者不能共存   三, 方法重写(掌握) 1、方法重写概念:子类出现了和父类中一模一样的方法声明(方法名一样,参数列表也必须一样) 2、方法重写的应用场景:当子类需要父类的功能,而功能主体子类有自己特有内容时 3、Override注解:用来检测当前的方法,是否是重写的方法,起到【校验】的作用 2.7 方法重写的注意事项(掌握) 方法重写的注意事项 1. 私有方法不能被重写(父类私有成员子类是不能继承的) 2. 子类方法访问权限不能更低(public > 默认 > 私有) 3. 静态方法不能被重写,如果子类也有相同的方法,并不是重写的父类的方法   四,抽象类的特点(记忆) 抽象类和抽象方法必须使用 abstract 关键字修饰 抽象类中不一定有抽象方法,有抽象方法的类一定是抽象类 抽象类不能实例化 抽象类可以有构造方法 抽象类的子类 要么重写抽象类中的所有抽象方法 要么是抽象类   五,模板设计模式(可以看作是抽象类的一个应用) 把抽象类整体就可以看做成一个模板,模板中不能决定的东西定义成抽象方法 让使用模板的类(继承抽象类 的类)去重写抽象方法实现需求 模板设计模式的优势 模板已经定义了通用结构,使用者只需要关心自己需要实现的功能即可   六,final(应用) fianl关键字的作用 final代表最终的意思,可以修饰成员方法,成员变量,类 final修饰类、方法、变量的效果 fianl修饰类:该类不能被继承(不能有子类,但是可以有父类) final修饰方法:该方法不能被重写 final修饰变量:表明该变量是一个常量,不能再次赋值 变量是基本类型,不能改变的是值 变量是引用类型,不能改变的是地址值,但地址里面的内容是可以改变的   七,代码块 4.1代码块概述 (理解) 在Java中,使用 { } 括起来的代码被称为代码块 4.2代码块分类 (理解) 局部代码块 位置: 方法中定义 作用: 限定变量的生命周期,及早释放,提高内存利用率 构造代码块 位置: 类中方法外定义 特点: 每次构造方法执行的时,都会执行该代码块中的代码,并且在构造方法执行前执行 作用: 将多个构造方法中相同的代码,抽取到构造代码块中,提高代码的复用性 静态代码块 位置: 类中方法外定义 特点: 需要通过static关键字修饰,随着类的加载而加载,并且只执行一次 作用: 在类加载的时候做一些数据初始化的操作 作用: 限定变量的生命周期,及早释放,提高内存利用率

标签:重写,进阶,构造方法,子类,面向对象,第六章,抽象类,父类,方法
From: https://www.cnblogs.com/lengsong/p/18115099

相关文章

  • MyDumper/MyLoader的进阶玩法
    一、前言从mydumperv0.11.5版本开始,mydumper提供了--load-data参数,使用此参数导出的sql文件将不再是insert语句,而是loaddata语句。在MySQL官方文档中关于loaddata是这么描述的:Whenloadingatablefromatextfile,useLOADDATA.Thisisusually20timesfasterthanus......
  • Caddy进阶:因为Nginx占用了80和443端口导致Caddy无法启动
    日志里面有个红色的error,表示安装后没有启动caddy的服务。看了很多文章,感觉都没有把我当小白。自己折腾了几个小时,总算搞明白了。1、如果80端口和443端口被其它程序(比如Nginx)占用了,得先卸载Nginx。查看443端口被谁占用了:root@web005:~#sudolsof-i:443COMMANDPIDUSE......
  • Spark进阶(四)Spark性能优化和调优
    一、Spark的性能优化工具和技术Spark的性能优化工具和技术主要包括以下几个方面:数据分区和缓存:合理地将数据进行划分和缓存,可以提高数据的访问效率。可以使用repartition或coalesce进行数据分区,使用persist或cache进行数据缓存。并行度设置:通过调整并行度,可以提高Spark......
  • 加入云原生实战营(星球),带你进阶 Go + 云原生高级开发工程师
    过去1年,趁着闲暇时间,我创建了一个Go+云原生技术学习社群,旨在帮助你快速进阶为Go+云原生高级开发工程师,提高你的职场竞争力、扩展职业宽度,最终谋得一份好差事(进入大厂、升职加薪)。本篇文章,我来详细介绍下云原生实战营知识星球,让你对本知识星球有一个充分的了解,通过这些了......
  • 每日面经分享(python进阶 part2)
    Python中的装饰器和上下文管理器区别是什么?它们分别适用于哪些场景?a.装饰器用于在函数或类的外部添加额外功能,而上下文管理器用于管理资源的获取和释放。b.装饰器是一种用于修改函数或类行为的技术。适用于需要在函数或类的外部添加额外功能的场景,比如日志记录、性能监......
  • Python_matplotlib进阶
    Python_matplotlib跳转链接之前的博客中已经展示了使用python的matplotlib库进行一些基础图像的绘制,本篇进一步展示一些matplotlib中的一些进阶图像绘制。importpandasaspdimportmatplotlib.pyplotaspltplt.rcParams['font.sans-serif']=['SimHei']Titanic=......
  • 计算几何进阶
    二维凸包模板题(luogu.P2742)凸包定义给定二维平面上的点集\(P\),定义能包含这些点的最小凸多边形为\(P\)的凸包。形象地说,凸包就是一根橡皮筋拉伸,使其包括了点集\(P\)中所有点,然后使橡皮筋收紧,橡皮筋就是\(P\)的凸包。例如,下面用红色线段表示了一个点集的凸包(原创图):凸......
  • 数据结构与算法分析实验3 [进阶]通过链表实现多项式加法和乘法
    文章目录大致内容介绍多项式加法代码一览头文件Poly.h内容如下:实现文件Poly.cpp内容如下:初始化增加元素删除元素功能函数遍历函数清除销毁打印多项式向多项式内插入一个元素源文件main.cpp内容如下:实现效果:多项式乘法实现方法:在Poly.h中添加声明:在Poly.cpp中添加实现:在......
  • Python语法学习五之面向对象
    一、面向对象11-1、定义类语法:class类名:方法列表#定义类classCar:defgetCarInfo(self):#定义属性,和Java等语言差别很大。print('车轮子个数:%d,颜色%s'%(self.wheelNum,self.color))defmove(self):print("车正在移......
  • python面向对象的四大支柱:抽象、封装、继承、多态
    1.抽象在面向对象编程中,抽象是指将类的属性和方法捆绑在一起,形成一个整体。抽象类无法实例化,但可以作为其他类的基类或父类。在Python中,我们使用abc模块定义抽象类,其中至少包含一个抽象方法。抽象方法是无法直接调用但可以被子类覆盖的方法。例如,我们可以定义一个Animal类,然......