# 20155335 《Java程序设计》第四周学习总结
## 教材学习内容总结
继承,在本职上是特殊到一般的关系,即is—a关系,子类继承父类,表明子类是一种特殊的父类,并且具有父类所不具有的方法和属性。
Java中所有的类都是通过直接或间接地继承java。Lang。Object类得到的,继承得到的称为子类,被继承的称为父类。
从类的结构看,子类不能继承父类访问权限为private的成员变量和方法,子类可以重复父类的方法,及的成员变量的命名可以与父类同名,java只支持单项继承,即一个类从多个超类派生的能力。其内部有四种形态(包括类属性和实例属性),方法(包括类方法和实例方法),构造器和初始化块(包括类的初始化和实例初始化块),对于继承中的初始化块顺序,又具体分为类的初始化和对象初始化。
类的初始化:
首先为类的所有类属性和类的初始化块分配内存空间,并在类首次初始化阶段中为其初始化,类属性和始化块之间的定义时顺序决定了初始化的顺序。若类存在父类,父类的类属性和类初始化块首先被初始化。
对象初始化
在new创建对象时,首先对对象属性和初始化快分配内存,并执行默认初始化,如果存在父类,则先为父类对象属性和初始化块先分配内存并执行初始化。
继承的语法是
修饰符 sth1 extends sth2
{
//类定义部分
}
继承通过extends 关键字来实现的,前为子类,后者为父类。
如何理解多态
分装和继承为多态而准备,对多态的定义是允许不同类的对象对同一个命令作出相应,即同一命令可以根据发送对象的不同采用多种不同的行为方式(发送消息及函数调用)。只有满足三个必要条件,在能有多态的定义,这三个条件是(1)要有继承(2)要有重写 (3)父类引用指向子类对象。
如何理解接口
定义一个接口,接口定义同类的定义类似,也是分为接口的声明和接口体,其中接口体由常量定义和方法两部分组成。定义接口的基本格式如下:
[修饰符]interface 接口名 [extend 父接口名列表]{
[public][static][final]常量;
[public][abstract] 方法;
}
修饰符:可选,用于指定接口的访问权限,可选值为public
。接口名需要选择参数,用于指定接口的名称,接口必须是合法的java标识符,一般情况下要求首字母大写。Extends 父接口名列表:可选参数,用于指定定义的接口继承那个父接口。当extends被使用时,父接口名必选参数。
注意
与java类文件一样,接口文件的文件名必须与接口名相同。
接口被定义后,就可以在类中实现这个接口。在类中实现接口可以使用关键字,基本格式为
[修饰符]class<类名>[extends 父类名][接口列表]{
}
对于多态的理解:
同一操作作用于不同对象,可以有不同的解释,有不同的执行结果,简单来说就是:父类的引用指向子类对象。
多态的分类
多态有四小类,强制的,重载的,参数的,参数的和包含的。
*强制的:一种隐式做类型转换的方法。
*重载的:将一个标志服作用域多个意义。
*参数的:为不同类型的参数提供相同操作。
*包含的:类包含关系的抽象操作。
## 教材学习中的问题和解决过程
- 1问题
操作数组对象P102页的运行结果前三个都为null
- xx1解决方案
已知类类型的初始值都为null。
Integer [] scores=new Integer[3];建立的对象个数为0,。
- xx2问题
如何让p135页的重载正确?
- xx2解决方案
将第六行中public double someMethod(int i)改为
Public double someMethod(float i)
- ...
- ...
## [代码托管](链接)
- 代码提交过程截图:
- 运行 git log --pretty=format:"%h - %an, %cd : %s" 并截图




- 代码量截图:
- 运行 find src -name "*.java" | xargs cat | grep -v ^$ | wc -l 并截图
## 上周考试错题总结
- 错题1及原因 第4题
System.out.printf(“”52+25)的结果是5225
- 错题2及原因 第16题int [] scores=Arrays.copyof(scores1,scores1.length),输出的第二行只有前五个元素,修改后的代码为int[]scores=Arrays.copyOf(scores1,5)
- 错题3 第27题
Java中如果将一个方法申明为私有,即通过private关键字来修饰,也就意味着该方法只能由这个类本身调用,构造方法类似于常规,同样可以被三个关键词修饰,但是不能有返回值,可以人为地申明为private,其他类不能直接调用该类生成新的对象,这种情况,该类只有一个对象实例。