# 20155226 2016-2017-2 《Java程序设计》第4周学习总结
1.教材学习内容
- 封装,继承,多态,是JAVA面向对象编程的三大特性.
1.封装:是把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏。封装是类的特征之一,像一些私有的,别的类不可以访问,都有访问权限,比较安全。
2.继承:指这样一种能力,它可以使用现有类的所有功能,并在无需重新编写原来的类的情况下对这些功能进行扩展。
继承有三种方式
- 实现继承
- 接口继承
- 可视继承。
3.多态:简单的说就是,允许将子类类型的指针赋值给父类类型的指针。
实现多态有二种方式
- 方法覆盖
- 方法重载
这里举一个书上的例子(这个游戏RPG例子我觉得很有成就感,知道游戏的编制方法,通过对这四个代码的充分理解,我终于搞清楚了什么是继承。):
第一个是可以运行的RPG软件。
被继承的代码
剑士的定义
魔法师的定义
虽然SwordsMan与Magician没有定义getName()、getLevel()、与getBlood()等方法,但从Role继承了这些方法,所以就如同例子中可以直接使用。
继承的好处就是若要将name、level、blood改为其他名称,那就只要修改Role.java就可以了,只要是继承Role的子类都无须修改。
最后的运行结果
抽象类与接口的区别
- 抽象类是类,它的子类不能再继承其它类了,但可以实现一个和多个接口。接口不是类,它的子接口可以继承多个接口。
- 抽象类中是可以有不用abstract修饰的方法,而接口中只能有抽象方法,即方法都要用abstract修饰。
- 抽象类可以实现接口,而接口是不能继承或实现抽象类的。
有人说,接口类似于抽象类,这是指它提供的方法只有方法头,而抽象类也有这样的情况。但实际上,区别是很大的,接口提供了一种JAVA中类不能多继承时引起的不便的一种解决方案,提高了灵活性。同时,接更有利于实现程序的扩展。
S.O.L.I.D原则
S.O.L.I.D.的设计原则
S.O.L.I.D.设计原则是一组面向对象设计的最佳实践。GoF设计模式符合这些原则以这样或那样的方式。术语S.O.L.I.D.从罗伯特C。马丁(朋友亲切地叫他鲍勃叔叔)在敏捷原则的著作,模式的名字5设计原则和实践在c#中收集的第一个字母。这些设计将遵循的原则。
1单一责任原则(SRP)
SRP原则和SoC原则保持高度的一致性。它要求每一个对象都应该只有一个元素改变了且只有一个职责。这一原则,可以避免单个类(如瑞士军刀在软件领域)。每个类可以保持简洁,能增强系统的可读性和可维护性。
2开闭原则((OCP)
(OCP原则要求类应该对扩展开放,修改应该关闭,这样可以添加新功能和扩展类不改变类的内部行为。这一原则试图避免破坏现有类和其他类依赖它,因为这可能会导致应用程序中的错误和错误的连锁反应。
3 Liskov替换原则(LSP)
太阳能发电原理指出,应该能够使用任何继承类替换父类和维持其行为不变。这一原则是一致的(OCP原则:确保继承类不影响父类的行为,换句话说,继承类必须能够取代他们的基类。
4接口隔离原则(ISP)
有关ISP原则是合同责任将被分为几个方法分组、分组方法和分配不同的接口,因此,客户端不需要实现一个大接口和一群不使用。这背后的目的原则是使用相同的接口的类只需要实现一个特定的方法,而不是一个大单的实现方法的接口。
5依赖性倒置原则(浸)
浸渍的目的原则是独立编写的类的具体实现,这类依赖于抽象类或接口。它提倡面向接口(而不是实现)编程,确保代码紧密耦合与一个特定的实现,从而提高系统的灵活性。
6依赖注入(DI)和控制反转(IoC)原则
与倾角密切相关的是国际奥委会DI原理和原则。DI提供底层类或奴隶类的构造函数,方法或属性。使用DI原则,这些奴隶类可以倒到接口或抽象类,从而形成了一个松散耦合的系统可测试性高、容易修改。
垃圾回收机制
Java的垃圾回收机制是Java虚拟机提供的能力,用于在空闲时间以不定时的方式动态回收无任何引用的对象占据的内存空间。
Object 数据类型
Object 数据类型保存引用对象的 32 位(4 字节)地址。可以为 Object 的变量分配任何引用类型(字符串、数组、类或接口)。 Object 数据类型可以指向任意数据类型的数据,包括您的应用程序识别的任意对象实例。当在编译时不知道变量可能指向哪种数据类型时,就使用 Object。
Enum
学习C / c++语言,应该的枚举类型。Enum通常是用来表示一组相同类型的常量。如性、日期、月、颜色等。为这些属性在恒定的好处很明显,不仅能保证单一的情况下,它可以用来取代“= =”=。是一个好习惯。JDK1.5没有这种类型的枚举,当接口的通用取代常数。JavaEnum,你可以更接近常数。
如何使用Java Enum 2
简单的用法:JavaEnum简单用法通常是用来表示一组常用的常数,可以用来代表一个类的相同类型的常量值。
如:sex:
public enum SexEnum {
man、woman
};
color:
public enum color {
red,blue,green,black
}
枚举对象中的值必须是唯一的。
您可以使用枚举类型名来引用常量,例如SexEnum。男,Color.RED。
教材中解决的问题
1. print与println的区别
println打印的时候自带了换行,下一次在打印的时候从下一行开始打印。
print不换行,下次打印的时候在这次打印的东西后面直接打印。
代码调试中的问题和解决过程
本周代码托管截图
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第一周 | 50/50 | 2/2 | 9/20 | |
第二周 | 50/100 | 2/4 | 10/38 | |
第三周 | 100/200 | 3/7 | 8/60 | |
第四周 | 217/317 | 2/9 | 18/90 | |
参考:软件工程软件的估计为什么这么难,软件工程 估计方法 |
-
计划学习时间:80小时
-
实际学习时间:30小时
-
改进情况: