一、继承
继承是从已有类派生一个新类的过程
继承的目的之一是复用已有的软件
继承在父类与子类之间创建了is-a的关系
类的继承格式
class 父类{};
class 子类 extends 父类{};
interface 父类{};
class 子类 implements 父类{};
super和this
super:能够经过super来实现对父类的访问,用来引用当前对象的父类
this:指向本身的引用html
二、抽象类的子类将对从父类继承的抽象方法提供具体定义——方法重写特殊状况
可见性
私有成员也被子类继承,但不能经过名字直接引用。不过能够间接引用他们。
设计继承
每次派生操做都应是一个is-a关系。子类应该是更具体的父类对象
设计类层次是为了复用,或是未来能够复用
在问题域中标出类和对象时,找出他们的共性。共性处于越高层次,越能保持一致性,进行维护。
适当地重写方法来知足子类性能
按需给子类添加新的变量,但不要隐藏继承的任何变量
容许每一个类管理它本身的数据。因此使用super引用来调用构造方法,能够用它调用被重写的方法
设计类层次来知足应用需求,须要注意未来如何使用
即便目前并不使用,也要适当地在子类重写toString和equals这类的通常方法,以便未来派生的类不会出现问题
使用抽象类来为类层次中的具体类指定一个公共类接口
谨慎使用可见性修饰符,在派生类中提供不违背封装原则访问便可。java
解答:
一、静态变量有两种状况:
静态变量是基本数据类型,这种状况下在类的外部没必要建立该类的实例就能够直接使用
静态变量是一个引用。这种状况比较特殊,主要问题是因为静态变量是一个对象的引用,那么必须初始化这个对象以后才能将引用指向它。
所以若是要把一个引用定义成static的,就必须在定义的时候就对其对象进行初始化。
二、静态方法:与类变量不一样,方法(静态方法与实例方法)在内存中只有一份,无 论该类有多少个实例,都共用一个方法。
静态方法与实例方法的不一样主要有:
静态方法能够直接使用,而实例方法必须在类实例化以后经过对象来调用。git
问题2解决方案:
迭代器(Iterator)
迭代器是一种设计模式,它是一个对象,它能够遍历并选择序列中的对象,而开发人员不须要了解该序列的底层结构。迭代器一般被称为“轻量级”对象,由于建立它的代价小。Java中的Iterator功能比较简单,而且只能单向移动:使用方法iterator()要求容器返回一个Iterator。第一次调用Iterator的next()方法时,它返回序列的第一个元素。注意:iterator()方法是java.lang.Iterable接口,被Collection继承。使用next()得到序列中的下一个元素。使用hasNext()检查序列中是否还有元素。使用remove()将迭代器新返回的元素删除。程序员
问题一解决方法:换位思考,编了个test程序验证。算法
问题二解决方法::密钥使用的背景是开放式环境,也就是说,若算法公开,解密的关键就在于双方使用相同或对称的密钥。简单来讲,密钥是一种参数(它是在明文转换为密文或将密文转换为明文的算法中输入的数据)
加密算法是明文转换成密文的变换函数,是算法。设计模式
问题三解决办法:使用String.valueOf('字符')的方法,就能将字符型以字符串形式返回。数据结构
错题1:Inheritance through an extended (derived) class supports which of the following concepts?(继承经过扩展(派生)类来支持下列概念中的哪个?)
A.interfaces
B.modulary
C.information hiding
D.code reuse(代码复用)
E.correctness
错误解析:经过扩展一个类并继承它,新类不须要从新实现任何继承的方法或实例数据,从而节省了程序员的工做量。所以,代码重用是重用他人代码的能力,经过扩展它来知足您的需求。经过继承父类能够大大的缩减代码的重复,对于本身选择接口类的问题,表示本身当时很迷,不知道怎么回事就选择了接口。ide
错题2:Which of the following is true regarding Java classes?(对于Java类,下面哪一个选项是正确的?)
A.All classes must have 1 parent but may have any number of children (derived or extended) classes(全部的类都必须有一个父类,可是可能有任意数量的子类(派生的或扩展的)类。)
B.All classes must have 1 child (derived or extended) class but may have any number of parent classes
C.All classes must have 1 parent class and may have a single child (derived or extended) class
D.All classes can have any number (0 or more) of parent classes and any number of children (derived or extended) classes
E.All classes can have either 0 or 1 parent class and any number of children (derived or extended) classes
错误解析:Java支持继承,但不支持多重继承,所以Java类能够有任意数量的子元素,但只有一个父类。此外,因为全部Java类都直接或间接地从对象类继承,全部Java类都只有一个父类。在作此题的时候,考虑了终极父类--Object类,由于它没有父类,因此选择则了E选项,可是,老师说能够把Object类看做本身是本身的父类的问题,我也表示很无奈。心疼这一分......函数
错题3:A variable declared to be of one class can later reference an extended class of that class. This variable is known as(声明为一个类的变量稍后能够引用该类的扩展类。这个变量被称为。)
A.protected
B.derivable
C.cloneable
D.polymorphic(多态)
E.none of the above, a variable declared to be of one class can never reference any other type of class, even an extended class
错误解析:术语多态意味着变量能够有多种形式。在通常状况下,Java被强烈定义为,一个变量,一旦被声明为一个类型,就永远不会改变为另外一种类型。例外的是,多态变量能够是任何类型的派生类(尽管不是同时,变量能够从一种类型转换为另外一种类型)。多态的问题,在看过第十章以后,明白了此题的答案,经过声明为父类的对象,就能够引用继承父类的子类的方法,这种灵活的操做就是经过继承实现的多态。性能
错误解析:多态变量能够包含许多不一样的类型,可是在程序执行以前,它不知道是哪种类型。在引用变量时,必须作出决策。这个决策是由运行时环境根据变量的最新分配而作出的。这道题也是有关多态的问题,因此看过第十章以后,是动态绑定的问题,效率较早期绑定低,可是动态绑定,体现了多态的灵活性。
错题5:Using the reserved word, super, one can(使用保留字super,能够)
A.access a parent class'constructor(s)
B.access a parent class'methods and instance data
C.access a child class'constructor(s)
D.access a child class'methods and instance data
E.none of the above
错误解析:保留字super提供了一种机制,用于访问父类的方法和实例数据(无论它们是否隐藏)。此外,可使用super来访问父类的构造函数。正确答案是A和B的组合选项。
错题6:If you instantiate an Abstract class, the class or object you wind up with(若是您实例化一个抽象类、类或对象会获得)
A.is also an Abstract class
B.is a normal class
C.is an Interface
D.is a reference to an Object
E.can't exist you cannot instantiate an Abstract class(不能存在不能实例化一个抽象类)
错误解析:您只能实例化具体的类而不是抽象类。可是您能够扩展抽象类和接口。
抽象类实际上是能够实例化的,可是他的实例化方式不是经过new方式来建立对象,而是经过父类的引用来指向子类的实例来间接地实现父类的实例化(由于子类要实例化前,必定会先实例化他的父类。这样建立了继承抽象类的子类的对象,也就把其父类(抽象类)给实例化了).可是:接口是不能被实例化的(接口压根就没有构造函数)。
错题7:A derived class has access to all of the methods of the parent class, but only the protected or public instance data of the parent class.(派生类能够访问父类的全部方法,但只访问父类的受保护或公共实例数据。)
A.true
B.false
错误解析:因为方法也能够声明为私有的,所以派生类没法访问任何私有方法。所以,派生类只能访问父类的受保护和公共方法和实例数据。没有看到访问全部方法,因此经过后半句就直接认为对了。
错题8:If class AParentClass has a protected instance data x, and AChildClass is a derived class of AParentClass, then AChildClass can access x but can not redefine x to be a different type.(若是类AParentClass有一个受保护的实例数据x,而AChildClass是一个派生类的AParentClass,那么AChildClass能够访问x,但不能从新定义x为另外一种类型。)
A.true
B.false
错题9
Aside from permitting inheritance, the visibility modifier protected is also used to
A. permit access to the protected item by any class defined in the same package
B. permit access to the protected item by any static class
C. permit access to the protected item by any parent class
D. ensure that the class cannot throw a NullPointerException
E. define abstract elements of an interface
正确答案: A 个人答案: B
解析:受保护的可见性修饰符用于以受保护的方式控制对项目的访问。保护是访问限于当前类(如私人项目),同一包中的类或此类的扩展类。
教材学习中的问题和解决过程, 一个问题加1分
代码调试中的问题和解决过程, 一个问题加1分
基于评分标准,我给本博客打分:11分。得分状况以下:正确使用Markdown语法+1.教材学习中的问题和解决过程+2.代码调试中的问题和解决过程+2.感想,体会不假大空+1.错题学习深刻+1.点评认真,能指出博客和代码中的问题+1.结对学习状况真实可信+1.课后题有验证+1,进度条有记录+1.
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第一周 | 200/200 | 2/2 | 20/20 | |
第二周 | 350/500 | 2/4 | 24/38 | |
第三周 | 512/1000 | 3/7 | 22/60 | |
第四周 | 1158/1300 | 4/9 | 35/90 | |
第五周 | 2905/3000 | 4/5 | 24/24 |