一个人至少拥有一个梦想,有一个理由去坚强

心若没有栖息的地方,到哪里都是在流浪

java编程思想——第一章对象导论(2)

1.6继承

继承使用(基类、超类或父类)型和(继承类或子类)类型的概念表示了这种类型之间的相似性。一个基类包含所有子类所共享的特征和行为。

1、子类拥有父类非private的属性和方法。

2、子类可以拥有自己属性和方法,即子类可以对父类进行扩展。

3、子类可以用自己的方式实现父类的方法。改变现有基类的方法的行为,这称为覆盖(overriding).

1.6.1  “是一个”与 “像是一个”关系

判断是否继承,就是要确定是否可以用is-a来描述类之间的关系,并使之具有实际意义。

有时必须在子类中添加新的接口元素,即扩展接口。新类型具有旧类型的接口,但是它还包含其他的方法,我们可以描述为is-like-a关系。

1.7伴随多态的可交换对象

所谓多态就是指程序中定义的引用变量所指向的具体类型和通过该引用变量发出的方法调用在编程时并不确定,而是在程序运行期间才确定,即一个引用变量倒底会指向哪个类的实例对象,该引用变量发出的方法调用到底是哪个类中实现的方法,必须在由程序运行期间才能决定。因为在程序运行时才确定具体的类,这样,不用修改源程序代码,就可以让引用变量绑定到各种不同的类实现上,从而导致该引用调用的具体方法随之改变,即不修改程序代码就可以改变程序运行时所绑定的具体代码,让程序可以选择多个运行状态,这就是多态性。

void doSomething(Shape shape) {
    shape.erase();
   //....
     shape.draw().
}

上面的方法可以与任何Shape对话。只要类型继承自Shape类,都可以调用doSomethimg方法。例如程序其他部分用到doSomething()方法:

Circle circle = new Circle();
Triangle triangle = new Triangle();
Line line = new Line();
doSomething(circle);
doSomething(triangle );
doSomething(line);

《java编程思想——第一章对象导论(2)》

将子类看作是它的基类的过程称为向上转型(upcasting)。

1.8 单根继承结构

java是单一继承的。在java中终极基类是Object。

单根继承结构保证所有对象都具备某些功能。单根继承结构使垃圾回收器的实现变得容易很多。

1.9 容器

java在其标准类库中包含大量的容器。例如我们可以把集合称为容器。并且这个容器具有满足不同需求的各种类型。比如List(用于存储序列),Map(也称为关联数组,用来建立对象之间的关联),Set(每种对象类型只持有一个),以及诸如队列、树、堆栈等 更多结构。

1.9.1  参数化类型(泛型)

在JavaSE5出现之前,容器中存储的对象都只具有java中的通用类型:Object。单根继承结构意味着所有东西都是Objec类型,所以可以存储Object的容器可以存储任何东西。这使得容器很容易被复用。

要使用容器,只需在其中置入对象引用,还可将其取回。但因为容器存储Object类型,所以当对象引用置入容器时,它必须向上转型为Object,因此它会丢失其身份。当取回它时,就获取一个对Object对象的引用,而不是置入时那个类型对象的引用。所以才有了向下转型的必要。

向下转型:向下转型为具体的类型。向上转型是安全的,例如Circle时一种Shape类型,但是不知道某个Object时Circle还是Shape,所以除非确切知道所要处理的对象的类型,否则向下转型几乎是不安全的。

在java中执行正确的向下转型方案,java SE5重大变化之一就是增加参数化类型,在java中称为泛型。

1.10 对象的创建和生命周期(这个问题很深奥,这里抽取个别概述)

在使用对象时,最关键的问题之一是它们生成和销毁方式。

两种方式解决复杂查找和释放存储空间的问题:

方式一:将对象置于堆栈。

方式二:在堆(heap)的内存池中动态地创建对象。

对象生命周期:对于允许在堆栈上创建对象的语言,编译器可以确定对象的存活时间,并可以自动销毁它。然而,如果在堆上创建对象,编译器就会对它的生命周期一无所知。java提供“垃圾回收器”的机制,可以自动发现对象何时不再使用,并销毁它,释放对象占用的内存。这一点可以说取决于所有对象都是继承自单根基类Object以及只能以一种方式创建对象(在堆上创建)这两个特性结合。

1.11 异常处理:处理错误

java一开始就内置了异常处理,而且强制你必须使用它。它是唯一可接受的错误报告方式。

1.12 并发编程

计算机编程中有一个基本概念,就是同一时刻处理多个任务的思想。并发简单的说,程序能够停下正在做的工作,转而处理其他问题,然后再返回主进程。有时中断对于处理时间性强的任务是必需的,但是对于大量其他问题,一般我们只是想把问题切分成多个可独立运行的部分(任务),从而提高程序的响应能力。在程序中,这些彼此独立运行的部分称之为线程,上述概念被称为“并发”。

通常,线程只是一种为单一处理器分配执行时间的手段。、

并发会出现的隐患:共享资源。如果多个并行任务都要访问同一项资源,那么就会出问题。例如,两个进程不能同时向一台打印机发送消息。为了解决这个问题,可以共享的资源,例如打印机,必须在使用时被锁定。因此,整个过程是:某个任务锁定某项资源,完成其任务,然后释放资源锁,使其他任务可以使用这项资源。

 

点赞

发表评论

电子邮件地址不会被公开。 必填项已用*标注