thinking in java ch2 notes

ch1 对象入门:

面向对象是一种抽象的进步,使得我们编程时候更多的是考虑问题本身,而非计算机的结构。面向对象的思想中,万物皆对象,都封装着各自的属性和行为。每个程序都是一组对象的组合,他们之间可以相互调用对方的方法完成协作,进而组合出各种强大的功能。每个对象都属于一个类,并且每个对象都能够接受从父类类型继承过来的的所有方法调用。

有两方面的原因促使我们控制对成员的访问。第一个原因是防止程序员接触他们不该接触的东西—— 通常是内部数据类型的设计思想。若只是为了解决特定的问题,用户只需操作接口即可,毋需明白这些信息。我们 向用户提供的实际是一种服务,因为他们很容易就可看出哪些对自己非常重要,以及哪些可忽略不计。 进行访问控制的第二个原因是允许库设计人员修改内部结构,不用担心它会对客户程序员造成什么影响。例如,我们最开始可能设计了一个形式简单的类,以便简化开发。以后又决定进行改写,使其更快地运行。若接口与实现方法早已隔离开,并分别受到保护,就可放心做到这一点,只要求用户重新链接一下即可。

编程中,应该尽量使用更加灵活的聚合关系而非继承关系,可以将成员对象设为私有的,这样就可以任意替换该成员变量,且对使用聚合后的对象的客户程序隐藏这个细节。

在继承关系中,子类既可以改善从父类得到的接口,这样就得到一种等价的关系:任何对父类的方法调用都同样适合于子类;也可以增添新的接口,这样就得到一种类似的关系:拥有父类类型的对象,并不能够调用子类新添加进去的接口,因为子类添加的接口并没有通知父类,仅仅是子类继承了父类,而非父类继承了子类。

我们可以把需要的功能作为接口添加到父类中,然后所有的子类对象都当作父类对象来处理。这样,我们就可以只与那一个父类对象打交道,统一了对所有子类对象的使用。这样,即使添加了新的子类,客户程序仍然可以以原来与父类打交道的方式继续正常运行,而不需要因为子类的变化而做修改访问接口,因而程序具有了更好的灵活性。这种子类当作父类来处理的方式称为“向上转型”。这时,当调用一个对象的方法时候,并不能够确定那个对象的准确类型,但是运行后却调用那个具体类型的方法,这就是多态。

设计程序的时候,也许我们仅仅想抽取出来一系列方法,但是把具体实现放到他的子类中,这样我们就可以抽象出来的方法放在用abstract或者interface修饰的父类或者接口中。

当我们遍历集合中的元素时候,可以使用iterator接口隐藏不同集合的实现细节,进而可以使不同集合灵活的替换。

面向对象的分析设计步骤:需求分析和约束制定;uml图设计出所有对象及他们的相互关系;编码;维护

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-02 00:12:27

thinking in java ch2 notes的相关文章

Java learning notes (1):Basic Knowlege points

Basic Knowlege points: 1: it's necessary that there is only one public class in per .java file 2: .java file name should better to same as class name 3: when set the environment variable CLASSPATH, you should make sure the '.' path can't be lack of.

java 命令notes

jps:查看本机的Java中进程信息. jstack:打印线程的栈信息,制作线程Dump. jmap:打印内存映射,制作堆Dump. jstat:性能监控工具. jhat:内存分析工具. jconsole:简易的可视化控制台. jvisualvm:功能强大的控制台. 1.jps 2.jstack http://www.hollischuang.com/archives/110 3.jmap 4.jstat( http://www.hollischuang.com/archives/481 ) j

Java Basic Notes——static修饰符

1.static 在程序中任何变量或者代码都是在编译时由系统自动分配内存来存储的,而所谓静态就是指在编译后所分配的内存会一直存在,直到程序退出内存才会释放这个空间,也就是只要程序在运行,那么这块内存就会一直存在.这样做有什么意义呢? 在Java程序里面,所有的东西都是对象,而对象的抽象就是类,对于一个类而言,如果要使用他的成员,那么普通情况下必须先实例化对象后,通过对象的引用才能够访问这些成员,但是有种情况例外,就是该成员是用static声明的(在这里所讲排除了类的访问控制). static 是

Java Study notes

public class Demo { public static void main(String[] args) { //这是输出语句同于将括号内的数据打印到控制台 System.out.println("hello world"); } /** * class:关键字 定义类 * Demo: 类名称 第一个字母要大写 * {}: 代表类的主题 * 在类中需要定义main方法,为java的主线程 * public: 访问修饰符,代表的是公有的 * static: 关键字 静态 *

88. Notes客户端开发中的Java

回顾一下,在Lotus Notes杂谈专栏中,我陆陆续续写的关于Notes里Java编程的文章也有不少:6. Lotus Notes中的开发语言.8. 从Lotusscript到Java.22. 为什么要在XPages中写Java?.31. 怎样在Xpages应用中写Java.42. Lotus Notes中的垃圾回收之Java等等.这篇文章继续谈谈Notes客户端开发中的Java.用Java进行Notes界面操作?Notes作为一个软件和开发平台,从历史上看总的发展趋势是可编程性不断提高.R4

JAVA命令大全

1.java.exe:======================运行java程序,这个相信每一位用Java的人知道了. 2.javac.exe:======================编译的Java程序,生成.class文件 3.javaw.exe:======================功 能:跟java命令相对的,可以运行.class文件,主要用来执行图形界面的java程序运行java命令时,会出现并保持一个console窗口,程 序中的信息可以通过System.out在conso

《 Java 编程思想》CH02 一切都是对象

尽管Java中一切都看作为对象,但是操纵的标识符实际上对象的一个“引用”. String s; // 这里只是创建了一个引用,而不是一个对象 String s = new String("abcd"); // 使用`new`操作符来创建一个对象,并将其与一个引用相关联 String s = "abcd"; // 字符串可以直接用带引号的文本初始化 必须由你创建所有对象 使用 new 操作符创建一个对象 存储到什么位置 由五个地方可以存储数据: 寄存器:由于寄存器数量

Think in C++ notes, Ch2 & 3, Objects & Class

留待修改 私货:啊这个标题逼格好高 5.2 10:36 开始阅读 Think in C++ notes, Ch2 & 3, Objects & Class,布布扣,bubuko.com

Read Notes:[Effective Java] Consider static factory methods instead of Constructors

Providing a static method instead of a public constructor has both advantages and disadvantages. One advantage of static factory methods is that, unlike constructors,they have names. A Second advantage of static factory methods is that, unlike constr