20165318 2017-2018-2 《Java程序设计》第四周学习总结
20165318 2017-2018-2 《Java程序设计》第四周学习总结
IDEA安装
按照娄老师Intellj IDEA 简易教程,我下载了IDEA但是由于没有注册学校邮箱,我没办法申请免费使用,我在网上找到了IntelliJ Idea 2017 注册码 免费激活方法顺利安装并运行了IDEA。
教材学习总结
第五章 子类与继承
- 每个子类只能有一个父类,而一个父类可以有多个子类。可以使用关键字
extends
来定义一个类的子类:
class 子类名 extends
类在不加extends
关键字时,默认为Object类,Object类是任何类(除了本身)的祖先类。
子类的继承性
- 子类和父类在同一个包中时,子类继承父类中不是
private
的成员变量和方法,且它们访问权限保持不变。 - 子类和父类不在同一个包中时,子类不继承
private
和友好访问权限的成员变量和方法,只继承protected
和public
。
- 子类和父类在同一个包中时,子类继承父类中不是
如果一个类A想通过一个其他类B的子类C创造对象来调用它的变量或者方法:①若要调用的是子类C内部新定义的而不是继承的,只要C与A同包即可; ②若要调用的是C继承下来的,只要C所继承的祖先类与A同包即可。
子类可以通过继承的方法来操作未继承的变量。
instanceof运算符:当左边的操作元是右边的类或子类所创造的对象时,运算结果是
true
,否则是false
。子类继承的方法只能操作子类继承和隐藏的成员变量。子类新定义的方法可以操作子类继承和子类新声明的成员变量,但无法操作子类隐藏的成员变量。
方法重写:要求新的方法的类型与父类相应方法一致或者是父类的方法的类型的子类型,并且这个方法的名字、参数个数、参数的类型和父亲的方法完全相同。例如:
class A {
Object get() {
return null;
}
}
class B extends A {
Integer get() { //Integer是object的子类
return new Integer(100);//返回一个Integer对象
}
}
重写方法可以操作继承的变量、方法,也可以操作子类新声明的成员变量、方法,但无法操作被子类隐藏的成员变量。如果子类想要使用被隐藏的方法或者成员变量,需使用
super
。注意,重写方法时不允许降低方法的访问权限,但可以提高访问权限。在使用重写时,注意区分重写,重载,语法错误。
float computer(float x,float y)//父类中的方法。
float computer(float x,float y)//子类中的方法,是重写。
double computer(float x,float y)//子类中的方法,语法错误,既不是重写,也不是v重载
float computer(float x,float y,double z)//子类中的方法,是重载。
super的使用方法:通过命令
super.[成员变量]
和super.[方法]
来分别使用被隐藏的变量和方法。子类不继承父类的构造方法。super必须是子类构造方法的头一条语句。如果在子类中没有写出super关键字,默认地有
super()
调用。在父类中定义多个构造方法时,应当包括一个不带参数的构造方法,因为Java不会提供默认的构造方法(不带参数的构造方法),会导致省略super时出现错误。
final关键字:final关键字可以修饰类、成员变量和方法中的局部变量。
- 修饰类:被修饰的类不能有子类。
- 修饰父类的方法:子类不能对被修饰的方法进行重写
- 修饰变量:被修饰的变量变为常量,常量在运行期间不能发生变化。
上转型对象:通过把子类创建的对象的引用赋给父类创建的对象来得到上转型对象。上转型对象不能操作子类新增的成员变量与方法,但是可以操作子类继承或隐藏的成员变量以及调用子类继承的方法或重写的实例方法。
如果子类重写了父类的某个实例方法后,上转型对象调用的是子类重写的实例方法。
注意的是,如果子类重写了父类的静态方法,则子类对象的上转型对象不能调用子类的重写静态方法,只能调用父类的静态方法。
多态性:父类的方法被子类重写时,可以各自产生自己的功能行为。
关键字abstract:
- 修饰方法:被修饰的方法只能声明不能运行。
- 修饰类:被修饰的类中可以有
abstract
方法,也可以有非abstract
方法。而没被修饰的类只能有非abstract
方法。
不允许使用
final
和abstract
同时修饰一个方法或类。不允许使用
static
修饰abstract
方法。(abstract方法必须是实例方法)abstract
父类的非abstract
子类必须重写父类的abstract
方法。abstrcat
的类只能声明对象但是不能创建对象,但是该对象可以成为其子类的上转型对象。上转型对象与对象:
使用多态进行程序设计的核心技术之一是使用上转型对象(将
abstract
类声明的对象作为其子类对象的上转型对象)。abstract
类在实际中很好用,因为它注重面向对象而不是面向类。开-闭原则是对扩展开放,对修改关闭。遵守开闭原则的系统易于维护。
第六章 接口与实现
使用关键字
interface
来定义一个接口。接口=接口声明+接口体
。接口体中只有常量(用
final
修饰,权限为public
,且为static
常量)和抽象方法(public
和abstract
修饰)。在类声明中使用关键字
implements
声明该类实现一个或多个接口。如果一个非抽象类实现了某个接口,那么这个类必须重写这个接口中的所有方法。在重写接口方法时,要去掉
abstract
修饰符,给出方法体,并用public
修饰。如果一个抽象类实现了某个接口,既可以重写接口中的方法,也可以直接拥有接口中的方法。
可以用接口名访问接口中的常量,也可以通过实现接口的类来直接使用。
public
接口可以被任意一个类实现,友好接口可被同一个包里的接口实现。接口也可以通过
extends
来继承,子接口将继承父接口的全部方法和常量。import语句可以引入包的类也可以引入包的接口。
接口回调:简单的说,接口回调就是为了能够调用某个接口中的方法。具体操作:类A实现接口B;A创建对象a;B声明变量b;b=a;
abstract
类与接口的比较:- 接口与
abstract
类都能用abstract
方法 - 接口只能有常量,不能有变量;而
abstract
类既可以有常量,也可以有变量 abstract
类中可以有非abstract
方法,接口不可以。
- 接口与
本周学习中遇到的问题和解决过程
- 问题1:编译Example5_6时,出现以下提示:
解决过程:在java 使用或覆盖了已过时的 API,怎么解决?中解释:源代码中,使用JDK中的类的时候,调用了已经过时的方法。所谓过时方法,是有些没有真正实现的方法,或存在潜在问题的方法。这些方法一般情况下,目前的JDK还支持,但在未来的某个版本中,可能就会取消的。所以,在本地使用的代码不必担心这个问题;要移值到其它计算机的程序必须要解决这个问题。
问题2:第五章课后题有问:重写方法的目的是什么?
解决方法:书中P121解释为:子类在重写可以继承的方法时,可以完全按照自己的意图编写新的方法体,以便体现重写方法的独特的行为。重写的作用中解释:重写是为了增强类的重用性和复用性,扩展性;重写是对类中方法的扩充,因为继承用的是父类的东西,重写则不仅得到父类的东西,同时也加入了自己的东西。
问题3:为什么使用接口,而不是直接写个方法实现呢?
解决方法:当子类有不同的父类时,但还要有同样的行为标准时,可以使用同一个接口。
码云链接:
https://gitee.com/besti-is-java-2018/20165318_sun_xiaoxuan
代码截图
20165318 2017-2018-2 《Java程序设计》第四周学习总结的更多相关文章
- Java程序设计第四周学习总结
1. 本周学习总结 1.1 尝试使用思维导图总结有关继承的知识点. 1.2 使用常规方法总结其他上课内容. 答:①String类是final类,不能定义String的子类. ② instanceof ...
- 对于“2017面向对象程序设计(JAVA)第四周学习总结”存在问题的反馈
对于“2017面向对象程序设计(JAVA)第四周学习总结”存在问题的反馈 “这部分同学博文总结没有写,实验作业没有提交.”——1.关于博文作业.实验作业教学功能的正解:学习知识.暴露问题.衔接课上.2 ...
- 201871010106-丁宣元 《面向对象程序设计(java)》第四周学习总结
201871010106-丁宣元 <面向对象程序设计(java)>第四周学习总结 正文开头 项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-da ...
- 杨其菊201771010134《面向对象程序设计(java)》第四周学习总结
<面向对象程序设计(java)> 第四周学习总结 第一部分:理论知识 1.类与对象 a.类(class)是构造对象的模板或蓝图.由类构造对象的过程称为创建类的实例: java中类声明的格式 ...
- 20155318 2016-2017-2 《Java程序设计》第九学习总结
20155318 2016-2017-2 <Java程序设计>第九学习总结 教材学习内容总结 学习目标 了解JDBC架构 掌握JDBC架构 掌握反射与ClassLoader 了解自定义泛型 ...
- 《Java程序设计》第二学习总结
<Java程序设计>第二学习总结 教材学习内容总结 类型 byte(字节) shot(短整型) int(整型) long(长整型) float(浮点型) double(双精度) char( ...
- 20145304 刘钦令 Java程序设计第二周学习总结
20145304 <Java程序设计>第2周学习总结 教材学习内容总结 java可区分基本类型和类类型(即参考类型)两大类型系统. 基本类型主要可区分为整数.字节.浮点数.字符与布尔. 整 ...
- 20145304 刘钦令 Java程序设计第一周学习总结
20145304<Java程序设计>第1周学习总结 教材学习内容总结 1995年5月23日,是公认的Java的诞生日,Java正式由Oak改名为Java. Java的三大平台是:Java ...
- 20145120黄玄曦 《java程序设计》 寒假学习总结
1和2.我对未来规划不多,我认为好好学习积累知识能帮助我应对未来的挑战,这是我的学习动力之一,此外,了解新知识满足好奇心也是我的主要的学习动力. 3.我认为专业课学习比公务员考试重要,我认为专业知识是 ...
- 201621123007 Java程序设计第一周 学习总结
第一周-Java基本概念 201621123007 <Java程序设计> 第一周学习总结 1. 本周学习总结 java是面向对象的一类语言,三大特征:封装性,继承性,多态性. jdk jr ...
随机推荐
- MyEclipse设置当前行背景颜色、选中单词前景色、背景色
General->Editors->Text Editors -> Current Line Hightlight 可以设置当前行的背景颜色 效果如下:
- TextView显示HTML文本时<IMG>标签指定图片的显示处理
TextView显示文本时是支持一些HTML标签的(具体支持那些标签会在下面附录列出),不会需要先用HTML的static方法fromHtml来转换一下. Spanned text = Html.fr ...
- javascript中的undefined与null的区别
一.相似性 在JavaScript中,将一个变量赋值为undefined或null,老实说,几乎没区别. var a = undefined; var a = null; 上面代码中,a变量分别被赋值 ...
- CentOS 7 yum安装配置mysql
首先去官网下载要用的yum源 传送门:http://dev.mysql.com/downloads/repo/yum/ yum源文件:/home/mysql57-community-release-e ...
- 浅谈白鹭Egret
浅谈白鹭Egret 最近在做一个移动项目,技术选型的时候接触到了白鹭,简单了解了之后觉得挺合适的,最终就选择了这个引擎. 为什么会选择白鹭引擎呢? 我看上他主要有一下几点: 1 ...
- ArcGIS10.3+Oracle12C+ArcGIS Server10.3安装布署(之二)
1.创建PDB 输入 dbca 命令 2.安装完成后,连接PDBSDE的容器数据库 3.环境变量 从Oracle的官方网站下载 instantclient-basic-nt-12.1.0.2.0. ...
- 关系型数据库基本概念及MySQL简述
数据库基本概念">关系型数据库基本概念 数据库: 对大量信息进行管理的高效解决方案. 按照数据结构来组织.存储和管理数据的库. 数据库系统(DBS,DATABASE SYSTEM): ...
- 今年新鲜出炉的30个流行Android库,你一定需要
作者|Michal Bialas 2017年快过去了,你年初的定的目标都快完成了吗?总结过去三个月内发布的 最新的30 个 Android 库和项目.你一定需要,建议收藏!让你事半功倍 1.Mater ...
- 导出WPS office文档格式的说明
针对microsoft office的文档格式,WPS office分别提供wps对应doc,et对应xls两种格式,word和excel是办公系统使用的普及度最广的文件格式,而国内的政府行政单 ...
- JVM知识(二):类加载器原理
我们知道我们编写的java代码,会经过编译器编译成字节码(class文件),再把字节码文件装载到JVM中,最后映射到各个内存区域中,我们的程序就可以在内存中运行了.那么问题来了,这些字节码文件是怎么装 ...