# 2019-2020-3 《Java 程序设计》第四周总结
2019-2020-3 《Java 程序设计》第四周知识总结
第五章:继承
1、定义继承关系的语法结构:
[修饰符] class 子类名 extends 父类名 {
类体定义 }
父类中应定义共有的属性和方法,子类除了可以继承父类中的属性和方法外,可以根据自己的具体特点定义自己特有的属性或方法。
【说明】:java类只支持单重继承,即只有一个父类的继承关系。
2、属性的继承与隐藏
属性的继承:
当父子类在同一个包中时,子类可以无条件继承父类的所有非私有属性。
当父子类不在同一包中时(父类被public 修饰),父类的被public 和protected 修饰的属性可以被子类继承。
属性的隐藏:
子类中出现和父类中同名属性的现象称为属性的隐藏。
当子类执行继承自父类的操作时处理的是继承自父类的属性,当子类执行自己定义的方法时,处理的是自己重新定义的同名属性。
3、方法的继承与覆盖
方法的继承:
当父子类定义在同一个包中时,父类的所有非私有方法可以被子类继承。
当父子类不在同一包中时(父类被public修饰),父类的被public和protected修饰的方法可以被子类继承。
方法的覆盖:
子类中定义了和父类具有相同方法头方法的现象称作方法的覆盖。
方法覆盖中,可以通过在方法名前使用不同的对象名或类名来加以区分调用的是父子类中的方法。
子类在重新定义父类已有的方法时,子类方法的访问控制修饰符控制范围至少应该和父类相同才行。
4、继承关系中的构造方法及super关键字
继承关系中,构造方法的使用遵循如下原则:
(1) 创建子类对象时,先调用父类构造方法在调用子类构造方法。
(2) 默认情况下调用父类的无参构造方法。
(3) 对于父类带参的构造方法,子类可以通过在自己的构造方法中使用super关键字来调用,但这条语句必须是子类构造方法中的第一条可执行语句。
Java中,关键字super关键字的用法有以下三种:
(1) 在子类构造方法中,可以通过super关键字调用父类的构造方法,要求该语句是子类构造方法的第一条可执行语句。
(2) 可以在子类通过super.父类属性调用父类属性,如果次属性不涉及属性的隐藏时,super.可以省略。
(3) 可以在子类中通过super.父类方法,调用父类中定义的方法,如果被调用的方法不涉及到覆盖时,super.可以省略。
【注意】this和super不能再static修饰的方法内使用。
5、抽象方法和抽象类
(1)抽象类:用abstract修饰的类叫做抽象类,抽象类不能实例化。
(2)抽象方法:用abstract修饰的方法叫做抽象方法,抽象方法只有方法头没有方法体。
(3)抽象方法必须定义在抽象类中。
6、多态性
通过覆盖父类的方法来实现,在运行时根据传递的对象引用,来调用相应的方法。若将子类对象的引用传递给声明为父类的参数,若子类有这个方法,就调用子类的方法,若子类没有这个方法,就调用父类的方法。
Instanceof:判断一个对象是否是一个类的实例,
对象名 instanceof 类名
7、final关键字
(1) 被fina修饰的类不能被继承,即不能有子类。
(2) 被final修饰的方法不允许子类隐藏可以继承的final方法。
(3) 被final修饰的常量在运行期间不允许再发生变化。
2019-2020-3《Java 程序设计》第四周学习总结
1.通过第二周的学习,利用教材和老师在蓝墨云上的一些教学视频以及通过老师和同学的博客以及一些课外资料,充分学习了第四章的内容,学习的内容有:子类与父类、子类的继承性、子类与对象、成员变量的隐藏和方法重写、super关键字、final关键字、对象的上转型对象、继承与多态、abstract类和abstract方法、面向抽象编程、开闭原则。通过这周的学习,对java有了更加深入的理解,也学会了许多实用的东西。
2.通过手打第四章代码,对语法有一定的帮助,并在调试完代码后上传至码云仓库,并提交脚本。
例子1:
例子2:
例子3:
例子4:
例子5:
例子6:
例子7:
例子8:
例子9:
例子10:
例子11:
例子12:
例子13:
面向抽象编程例子:
脚本截图:
注:我的码云链接:https://gitee.com/zzm-zcc/zhang_zhi_min
2019-2020-3 《Java 程序设计》第四周练习题生疏题、错题总结
1、下列说法正确的是(ACD)
A .使用extends关键字定义一个类的子类。
B .Java与C++类似,支持多继承,即子类可以有一个或多个父类。
C .Object是所有类的祖先类。
D .如果子类继承父类的成员变量作为自己的一个成员变量,则该成员变量可以被子类中自己定义的任何实例方法操作。
2、下列说法错误的是(AD)
A .继承的成员变量或方法的访问权限可以由子类重新定义。
B .若子类和父类不在同一包,子类只继承父类中的protected和public访问权限的方法作为子类的方法。
C .继承关系的UML类图用一个实线连接两个类,起始端是子类,重点端是父类,终点端使用空心三角形表示实线的结束。
D .如果在类本身创建一个对象,则该对象不可以通过“.”运算符访问继承的protected变量。
3、如果子类和父类不在同一包中,子类不继承父类的友好成员变量。(A)
A .true
B .false
4、instanceof主要用来判断一个类是否实现了某个接口,或者判断一个实例对象是否属于一个类。(A)
A .true
B .false
5、下列关于Override的说法,正确的是(ABC)
A .子类所声明的成员变量的名字和从父类继承来的成员变量名字相同但类型不同时,子类会隐藏所继承的成员变量。
B .除了继承的方法之外,子类新定义的方法可以操作子类继承的成员变量。
C .子类重写的方法,方法名字、参数个数、参数类型和父类的方法完全相同。
D .重写方法可以操作被子类隐藏的成员变量和方法。
# 2019-2020-3 《Java 程序设计》第四周总结的更多相关文章
- Java程序设计第四周学习总结
1. 本周学习总结 1.1 尝试使用思维导图总结有关继承的知识点. 1.2 使用常规方法总结其他上课内容. 答:①String类是final类,不能定义String的子类. ② instanceof ...
- 201871010106-丁宣元 《面向对象程序设计(java)》第四周学习总结
201871010106-丁宣元 <面向对象程序设计(java)>第四周学习总结 正文开头 项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-da ...
- 20145213《Java程序设计》第四周学习总结
20145213<Java程序设计>第四周学习总结 教材学习内容总结 本周任务是学习面向对象的继承.接口以及之后的如何活用多态.(还真是路漫漫其修远兮啊!)教材也是延续上周艰深晦涩的语言风 ...
- 20145330《Java程序设计》第四周学习总结
20145330<Java程序设计>第四周学习总结 一周两章新知识的自学与理解真的是很考验和锻炼我们,也对前面几章我们的学习进行了检测,遇到忘记和不懂的知识就再复习前面的,如此巩固也让我对 ...
- 20145337《Java程序设计》第四周学习总结
20145337<Java程序设计>第四周学习总结 教材学习内容总结 继承与多态 继承 继承,避免多个类间重复定义共同行为 符合DRY(Don't Repeat Yourself)原则,多 ...
- 20145218 《Java程序设计》第四周学习总结
20145218 <Java程序设计>第四周学习总结 教材学习内容总结 继承 继承共同行为 继承基本上就是避免多个类间重复定义共同行为. 继承的三个好处:减少代码冗余:维护变得简单:扩展变 ...
- 《Java程序设计》第四周学习总结
20145224-陈颢文 <Java程序设计>第四周学习总结 教材学习内容总结 第六章 继承与多态 ·继承就是面向对象中,子类继承父类,避免重复的行为定义.重复再程序设计上是非常不好的信号 ...
- 20155304 2016-2017-2 《Java程序设计》第四周学习总结
20155304 2016-2017-2 <Java程序设计>第四周学习总结 教材学习内容总结 第六章 继承: 概念: 面向对象中,为避免多个类间重复定义共同行为.(简单说就是将相同的程序 ...
- 201521123061 《Java程序设计》第十四周学习总结
201521123061 <Java程序设计>第十四周学习总结 1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结多数据库相关内容. 2. 书面作业 1. MySQL数据 ...
- 201521123038 《Java程序设计》 第四周学习总结
201521123038 <Java程序设计> 第四周学习总结 1. 本周学习总结 1.1 尝试使用思维导图总结有关继承的知识点. 1.2 使用常规方法总结其他上课内容. 1.通过 ins ...
随机推荐
- 常用命令npm,gulp, node
npm常用命令: 检查npm模块的安装情况:(以常用模块 grunt为例说明) 1) 检查是否全局安装了模块Grunt: $npm list -g grunt 2) 列出所有已经全局安装的模块:$np ...
- hadoop的hdfs中的javaAPI操作
package cn.itcast.bigdata.hdfs; import java.net.URI; import java.util.Iterator; import java.util.Map ...
- Android 开发 系统组件集合
常用的TextView.Button.ImageView和几个常用布局就不介绍了,我们介绍一些特别好用但是常常忘记的组件. 标题栏组件 <androidx.appcompat.widget.To ...
- 表单:!!!常用JS: form 表单代码
手机(文本框): <input type="text" name="" maxlength="11" placeholder=&quo ...
- Android单元测试学习(一)
什么是单元测试 首先总结一下什么是单元测试,单元测试中的单元在Android或Java中可以理解为某个类中的某一个方法,因此单元测试就是针对Android或Java中某个类中的某一个方法中的逻辑代码进 ...
- 1.MySQL基础
1.创建一个数据库: create database db_test; 2.创建一个表: MySQL [mysql]> use db_test; Database changed MySQL [ ...
- HTTPS协议、TLS协议、证书认证过程解析
一.HTTPS 协议 HTTPS协议其实就是HTTP over TSL,TSL(Transport Layer Security) 传输层安全协议是https协议的核心. TSL可以理解为SSL (S ...
- springboot整合websocket实现一对一消息推送和广播消息推送
maven依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId> ...
- OpenStack 安装:glance 安装
接上一篇keystone, 这一篇介绍glance服务: 在开始操作之前,先用source环境变量,然后创建glance 用户,并设置密码为glance [root@linux-node1 ~]#op ...
- javascript中的getter和setter
在ECMAScript 5中,属性值可以用一个或两个方法代替,这两个方法就是getter和setter var man = { name : 'lidg', weibo : '@lidg', get ...