20165211 2017-2018-2 《Java程序设计》第4周学习总结

教材学习内容总结

本周,我学习了书本上第五、六两章的内容,以下是我整理的主要知识。

第五章 子类与继承

子类与父类
1.1子类

class 子类名 extends 父类名

由继承而来的类称为子类,被继承的类称为父类(超类)。

Java不支持多重继承,子类只能有一个父类,子类与父类是“is-a”关系。

1.2类的树形结构

Java的类按继承关系成树形结构(一对多),根结点是object类,是所有类的祖先类。

若类的声明中没有使用extends关键字,默认这个类是object的子类

子类的继承性
2.1 子类和父类在同一包中的继承性

子类自然地继承了其父类中不是private的成员作为自己的成员

2.2 子类和父类不在同一包中的继承性

子类只继承父类中的protected和public访问权限的成员变量作为子类的成员变量。

2.3 protected的进一步说明
子类与对象
3.1 子类对象的特点

用子类的构造方法创建一个子类的对象时,父类的成员变量也分配了内存范围,只将子类继承的那部分成员变量,作为分配给子类对象的变量

3.2 关于instanceof运算符

左面的操作元是对象,右面的操作元是类,当左面的操作元是右面的类或其子类所创建的对象时,结果是true。

成员变量的隐藏和方法重写
成员变量的隐藏

声明的成员变量的名字和从父类继承来的成员变量的名字相同,在这种情况下,子类就会隐藏所继承的成员变量。

方法重写

子类通过重写隐藏已继承的方法

子类通过方法的重写可以把父类的状态和行为改变为自身的状态和行为

重写方法可以操作继承的成员变量、调用新意义和其他方法,但无法操作被子类隐藏的成员变量和方法

重写父类的方法时,不允许降低方法的访问权限,但可以提高访问权限

super关键字
用super操作被隐藏的成员变量和方法

在子类中想使用被子类隐藏的成员变量或方法时,需要使用关键字super。例:super.x,super.play

使用super调用父类的构造方法

子类不继承父类的构造方法,因此,子类在其构造方法中需要使用super来调用父类的构造方法,且super必须是子类构造方法的头一条语句。

final关键字
final类

final类不能被继承,不能有子类

final方法

用final修饰父类中的一个方法,那么,这个方法不允许子类重写

常量

概念:成员变量或局部变量被修饰为final

对象的上转型对象

子类与父类:“is-a”关系

上转型对象的实体是由子类负责创建的,但上转型对象会失去原对象的一些属性和功能。

上转型对象不能操作子类新增的成员变量,不能调用子类新增的方法。可以访问子类继承或隐藏的成员变量,也可以调用子类继承的方法或子类重写的实例方法。

继承与多态

多态性就是指父类的某个方法被其子类重写时,可以各自产生自己的功能行为。

abstract类和abstract方法

abstract类可以有abstract方法

abstract类不能用new运算符创建对象

abstract类的子类

abstract类的对象做上转型对象

面向抽象编程

可以使程序的设计者把主要精力放在程序的设计上,而不必拘泥于细节的实现

使用多态进行程序设计的核心技术之一是使用上转型对象,

开-闭原则

设计的系统对扩展开放,对修改关闭,系统易于维护

第5章 接口与实现

接口
接口声明

interface 接口的名字

接口体

包括常量的声明和抽象方法两部分,只有抽象方法,没有简单方法,所有常量的访问权限一定是public,static常量,所有抽象方法的访问权限一定是public

实现接口

一个类需要在类声明中使用关键字implement声明该类实现一个或多个接口,实现多个接口,用逗号隔开。例:class A implement Printable ,Addable

如果一个非抽象类实现了某个接口,那么这个类必须重写这个接口中的所有方法。类在重写接口方法时不仅要去掉abstract修饰符,给出方法体,方法访问权限要用public修饰。

接口也可以被继承

接口的UML图

名字层--常量层--方法层

接口回调

用接口声明的变量称作接口变量,接口属于引用型变量

接口回调是指:可以把实现某一接口的类创建的对象的引用复制给该接口声明的接口变量,那么改接口就可以调用被类实现的接口方法。

理解接口

接口可以抽象出重要的行为标准,该行为标准用抽象方法表示

可以把实现接口的类的对象引用复制给接口变量,该接口变量可以调用被该类实现的接口方法。

接口与多态

有接口产生的多态是指不同的类在实现同一个接口是可能具有不同的实现方法,那么接口变量在回调接口方法时就可能具有多种形态。

接口参数
abstract类与接口的比较

abstract类和接口都可以有abstract方法

接口中只可以有常量,不能有变量,abstract类中既可以有常量,也可以有变量

abstract类中可以有非abstract方法,接口不可以

代码调试中的问题和解决过程

  • 问题1:

  • 问题1解决方案:cheapGoods.newSetWeight(),括号中需要填入int型的数据。

  • 问题2:

  • 问题2解决方案:使用println输出产生错误,应为printf

代码托管

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 5000行 30篇 400小时
第一周 37/37 1/1 10/10
第二周 399/436 1/2 12/22
第三周 764/1163 1/3 18/40
第四周 687/1813 1/4 12/52

20165211 2017-2018-2 《Java程序设计》第4周学习总结的更多相关文章

  1. 学号 20175212 《Java程序设计》第九周学习总结

    学号 20175212 <Java程序设计>第九周学习总结 教材学习内容总结 一.MySQL数据库管理系统 1.在官网上下载并安装MySQL 2.在IDEA中输入测试代码Connectio ...

  2. 20145213《Java程序设计》第九周学习总结

    20145213<Java程序设计>第九周学习总结 教材学习总结 "五一"假期过得太快,就像龙卷风.没有一点点防备,就与Java博客撞个满怀.在这个普天同庆的节日里,根 ...

  3. 20145213《Java程序设计》第二周学习总结

    20145213<Java程序设计>第二周学习总结 教材学习内容总结 本周娄老师给的任务是学习教材的第三章--基础语法.其实我觉得还蛮轻松的,因为在翻开厚重的书本,一股熟悉的气息扑面而来, ...

  4. 20145213《Java程序设计》第一周学习总结

    20145213<Java程序设计>第一周学习总结 教材学习内容总结 期待了一个寒假,终于见识到了神秘的娄老师和他的Java课.虽说算不上金风玉露一相逢,没有胜却人间无数也是情理之中,但娄 ...

  5. 21045308刘昊阳 《Java程序设计》第九周学习总结

    21045308刘昊阳 <Java程序设计>第九周学习总结 教材学习内容总结 第16章 整合数据库 16.1 JDBC入门 16.1.1 JDBC简介 数据库本身是个独立运行的应用程序 撰 ...

  6. 20145330孙文馨 《Java程序设计》第一周学习总结

    20145330孙文馨 <Java程序设计>第一周学习总结 教材学习内容总结 刚开始拿到这么厚一本书说没有压力是不可能的,开始从头看觉得很陌生进入不了状态,就稍微会有一点焦虑的感觉.于是就 ...

  7. 20145337 《Java程序设计》第九周学习总结

    20145337 <Java程序设计>第九周学习总结 教材学习内容总结 数据库本身是个独立运行的应用程序 撰写应用程序是利用通信协议对数据库进行指令交换,以进行数据的增删查找 JDBC可以 ...

  8. 20145337 《Java程序设计》第二周学习总结

    20145337 <Java程序设计>第二周学习总结 教材学习内容总结 Java可分基本类型与类类型: 基本类型分整数(short.int.long).字节(byte).浮点数(float ...

  9. 20145218《Java程序设计》第一周学习总结

    20145218 <Java程序设计>第一周学习总结 教材学习内容总结 今天下午看了Java学习的视频,感觉很是新奇,之前觉得Java学起来是艰难枯燥的,但通过第一章的学习觉得如果自己可以 ...

  10. 《Java程序设计》第九周学习总结

    20145224 <Java程序设计>第九周学习总结 第十六章 整合数据库 JDBC入门 ·数据库本身是个独立运行的应用程序 ·撰写应用程序是利用通信协议对数据库进行指令交换,以进行数据的 ...

随机推荐

  1. FW 常见的性能测试工具有: loadRunner/netperf/httperf/apache_ab/Apache JMeter

    常见的性能测试工具有: loadRunner/netperf/httperf/apache_ab/Apache JMeter , 其中loadRunner属于付费软件,所以在这里不做介绍 netper ...

  2. webstorm的使用技巧——1

    由于光标是在使用中突然发生变化,推测是碰到了快捷键,因此断定有快捷键可以修改.后来,无意中碰到了“Insert”键,于是光标立即发生了变化,“黑块矩形”变成“小竖线”.由此知道,insert键可以使光 ...

  3. SEO工作中如何增加用户体验?10个细节要注意!

    我们一直在做的网站SEO工作,如果你认为它的目的仅仅是为了提高网站的排名那就错了,还有一个同样很重要的方面就是增加用户的体验,使网站更加符合网民的浏览习惯,需要做到这个方面的成功我们有10个小细节是需 ...

  4. Qt 事件系统浅析 (用 Windows API 描述,分析了QCoreApplication::exec()和QEventLoop::exec的源码)(比起新号槽,事件机制是更高级的抽象,拥有更多特性,比如 accept/ignore,filter,还是实现状态机等高级 API 的基础)

    事件系统在 Qt 中扮演了十分重要的角色,不仅 GUI 的方方面面需要使用到事件系统,Signals/Slots 技术也离不开事件系统(多线程间).我们本文中暂且不描述 GUI 中的一些特殊情况,来说 ...

  5. 自定义Metrics:让Prometheus监控你的应用程序

    前言 Prometheus社区提供了大量的官方以及第三方Exporters,可以满足Prometheus的采纳者快速实现对关键业务,以及基础设施的监控需求. 如上所示,一个简单的应用以及环境架构.一般 ...

  6. [py]处理文件的3个方法

    file处理的3个方法: f和f.readlines效果一样 # f.read() 所有行 -> 字符串 # f.readline 读取一行 -> 字符串 # f.readlines 所有 ...

  7. angular $scope.$watch

    在$scope内置的所有函数中,用得最多的可能就是$watch 函数了.当你的数据模型中某一部分发生变化时,$watch函数可以向你发出通知. 你可以监控单个对象的属性,也可以监控需要经过计算的结果( ...

  8. SQL Expression Language Tutorial 学习笔记一

    http://docs.sqlalchemy.org/en/latest/core/tutorial.html Google 翻译了一下 SQLAlchemy Expression Language, ...

  9. Http请求中Content-Type和Accept讲解以及在Spring MVC中的应用

    在Http请求中,我们每天都在使用Content-type来指定不同格式的请求信息,但是却很少有人去全面了解content-type中允许的值有多少,这里将讲解Content-Type的可用值,以及在 ...

  10. 用户用户组管理:用户管理命令-passwd

    passwd直接回车就是给root设密码.或加root. 普通用户只能改自己的密码.改时直接敲passwd,回车.否则报错. 因为只有root可以在passwd后加用户名.其实最常见的就是不加选项. ...