第九章 继承
1、建立子类
一、继承:它是从现有类派生出新类的过程,而且是一种强有力的软件开发技术,他是面向对象的编程的显著特征。
二、经过继承,新类自动包含了原始类的变量和方法,而后程序员能够将新变量和方法添加到派生的新类,或者修改所继承的方法和变量。
三、特色:经过继承建立新类比从新鞋类更快捷、更容易且成本更低。继承是支持软件复用的途径之一。
四、用于派生类的成为父类、超类或基类,被派生出的类称为子类或亚类。Java用保留字extends指明新类有现有类派生。
五、protected修饰符:当一个变量或方法声明为protected可见性时,子类就能够引用它,而且父类保持了必定的封装性。
六、super引用:在一个类中可使用保留字super引用父类,即便用super引用能够访问父类的成员;构造方法的第一行应该用super引用调用父类构造方法。
七、多继承:Java的继承方法叫作单继承,即子类只能有惟一的父类。php
2、重写方法
一、当子类和父类有相同方法名和签名,子类方法将重写父类方法,子类方法优先。
二、类层次结构:从一个父类派生出的子类,还能够是它本身的子类,而且能够多个子类能够从一个父类派生。
三、抽象类:抽象类在类层次结构中充当占位符,注:对一个抽象方法使用final或static修饰符将产生矛盾。html
通常而言,继承更加快捷。java
可是有没有特别的时候呢?git
Jams Gosling(Java之父)作发起人讲话的时候在被问到:“若是你从新构造Java,你想改变什么?”的时候,说到:“我想抛弃classes”,他这样解释:“真正的问题不是因为class自己,而是实现继承(extends 关系)。接口继承(implements关系)是更好的。你应该尽量的避免实现继承。”程序员
问题2:软件复用是什么?web
问题2解决方案:软件复用是使用现有软件组件实现或更新软件系统的过程。
它能够下降成本和开发时间,产生可靠的软件实现标准化,在不一样应用中保持一致 。编程
问题3:抽象类与接口的区别?数组
问题3解决方案:
书中讲:数据结构
在抽象类中,每个抽象方法都必须使用abstract修饰符,但抽象类没必要必定包含抽象方法。学习
注:有抽象类派生的子类必须重写全部父类的抽象方法,不然该子类仍然是抽象类。
抽象类是用来捕捉子类的通用特性的 。它不能被实例化,只能被用做子类的超类。抽象类是被用来建立继承层级里子类的模板。接口是抽象方法的集合。若是一个类实现了某个接口,那么它就继承了这个接口的抽象方法。这就像契约模式,若是实现了这个接口,那么就必须确保使用这些方法。接口只是一种形式,接口自身不能作任何事情。
问题1:一开始不知道super怎么用,老是调用不对对象或者是方法。
问题1解决方案:发现我将继承和super调用弄混了,继承能够直接使用父类变量或者方法,我还在那里使劲用super调用。
问题2:为何抽象类被子类继承之后,在驱动中输入System.out.println(....)调用方法显示出错?
可是当我直接提取方法的时候就能够:
错题1
In Java, arrays are
A. primitive data types
B. objects
C. interfaces
D. primitive data types if the type stored in the array is a primitive data type and objects if the type stored in the array is an object
E. Strings
正确答案: B 个人答案: D
解析:在Java中,数组是做为对象实现的。该变量是存储整个数组的内存块的引用变量。可是,使用记号名称[index]而不是消息传递来访问数组。
缘由:由于数组的运用和原始数据类型比较像,并且定义的时候也用到了,因此没有分清。
错题2
Given the following declarations, which of the following variables are arrays?
int [ ] a, b;
int c, d [ ];
A. a
B. a and b
C. a and d
D. a, b and d
E. a, b, c and d
正确答案: D 个人答案: C
解析:第一个声明声明a和b都是int数组。第二个声明声明c和d是整数,可是在d的状况下是一个int数组。因此,a,b和d都是int数组。
缘由:数组的定义,我本人为用逗号分开就表明已经分为定义两个部分,感受本身傻,好傻
错题3
If a and b are both int arrays, then a = b; will
A. create an alias
B. copy all elements of b into a
C. copy the 0th element of b into the 0th element of a
D. return true if each corresponding element of b is equal to each corresponding element of a (that is, a [0] is equal to b [0], a [1] is equal to b [1] and so forth) and return false otherwise
E. return true if a and b are aliases and return false otherwise
正确答案: A 个人答案: B
解析:“=”是一个赋值运算符。若是这两个变量都是基元,那么左边的变量会获得右边变量的副本(因此若是a和b是int值而且b = 5,那么a就变成5)。可是,因为a和b是数组,因此引用变量a被设置为引用变量b,致使a和b引用内存中的同一个数组,或者它们如今是彼此的别名。
缘由:这个当时查了资料,也作了相关的实验,只发现告终构,没有特别在乎别名的改变。
错题4
A Java main method uses the parameter (String [ ] variable) so that a user can run the program and supply "command-line" parameters. Since the parameter is a String array, however, the user does not have to supply any parameters.
A. true
B. false
正确答案: A 个人答案: B
解析:主要方法须要参数,以防程序员但愿容许用户提供命令行参数。而后,将在命令行输入的任何内容做为命令行参数接受。若是它是由空格分隔的几个单词,那么每一个单词存储为一个单独的字符串数组元素。例如,“java foo.class hi there”会将变量[0]中的“hi”和变量[1]中的“there”存储起来以供程序使用。
缘由:我认为还要加上什么-t呀之类的参数。
错题5
If the following statement is performed: CD [ ] my collection = new CD [200]; where CD is a previously defined class, then my collection [5] is a CD object.
A. true
B. false
正确答案: A 个人答案: B
解析:变量mycollection被声明为一个CD对象数组,所以mycollection [5]是数组中的第6张CD,因为CD是一个对象,mycollection [5]是一个CD对象。
缘由:他们之间的从属关系,没有搞得太明白。
错题6
In Java, an array can only store one type of data. For instance, you cannot create an array that stores both double and String values.
A. true
B. false
正确答案: A 个人答案: B
解析:数组被称为同类型。这意味着存储在数组中的值的类型对于每一个元素都必须是相同的。该类型由声明决定。因此,int [] x仅使x为int数组。因此,没有数组能够存储双打和字符串。
缘由:解析里只是表面int型,假如就和书中例题同样是object呢?不理解.......
错题7
A ragged array is a multidimensional array whose initial indices don't all start at zero.
A. true
B. false
正确答案: B 个人答案: A
解析:长度并不相等。Java中全部数组的初始索引必须从零开始。
缘由:书中也好像写过能够不从0开始,那个ragged没有理解这个数组是个啥??
这一周学习内容相比于上周稍微轻一点,可是中途又添加的实验学习,又须要咱们花费很多时间去和咱们最最亲爱的Java打交道了。
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | |
---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 |
第一周 | 156/156 | 1/1 | 15/15 |
第二周 | 217/371 | 1/2 | 20/35 |
第三周 | 233/604 | 2/4 | 20/55 |
第四周 | 1382/1986 | 1/5 | 35/90 |
第五周 | 146/2196 | 1/6 | 25/115 |
第六周 | 462/2658 | 1/7 | 15/130 |
第七周 | 856/3514 | 1/8 | 20/150 |