2013年3月15,开始搞JAVA,本系列仅是自己的看书笔记;边看书边记录;看的书是电子版,叫《JAVA编程思想》
part1:基本概念;
一:
面向对象语言的五个基本特性:
1.万物皆为对象;
2.程序是对象的集合,他们彼此通过发送消息来调用对方。
3.每个对象都拥有由其他对象所构成的存储。可以理解为,你可以通过创建包含现有对象集合的包的方式来创建新类型的对象。
因此,可以在程序中构建复杂的体系,同时将复杂性通过对象的质朴性得以屏蔽。
4.每个对象都拥有其类型(Type)。按照通俗的说法,每个对象都是某个类(Class)的一个实例(Instance)(还不是很懂~)
5.某一特定类型的所有对象都可以接收同样的消息。
面向对象优点:代码复用是面向对象程序设计语言所提供的最了不起的优点之一。
二:
类(Class)被描述成了具有相同性质(数据元素)和行为(功能)的对象集合,那么一个类就确实是一个数据类型,
(可否理解为一个类就是一个结构体?)
一旦类被建立,你想要创建该类的多少个对象,就可以创建多少个了,
然后去操作它们,就像它们是存在于你的待解问题中的元素一样...
怎样才能获得对你有用的对象呢?
每个对象都只能满足某些请求,这些请求由对象的接口(Interface)所定义,决定接口的便是类型(Type)
Light lt = new Light();
lt.on();
接口定义了你能够对某一特定对象发出的请求。但是,在程序中必须有满足这些请求的代码。
这些代码与隐藏的数据一起构成了实现(implementation)。
此过程通常被总结为:你向某个对象发送消息(产生请求),这个对象便知道此消息的目的,然后执行对应的程序代码。
上例中,类型/类的名称是Light,特定的Light对象的名称是lt,
你可以向Light对象发出的请求是:打开它(on)、关闭它(off)、将它调亮(brighten)、将它调暗(dim)。
你以这种方式创建了一个Light对象:定义这个对象的“引用(reference)”(lt),然后调用new方法来创建该类型的新对象。为了向对象发送消息,你需要声明对象的名称,并以圆点符号连接一个消息请求。从预定义类的用户观点来看,这些差不多就是用对象来进行设计的全部。
2.1: 权限
Java使用三个关键字来在类的内部设定边界:public、private、protected
public: public表示紧随其后的元素对任何人都是可用的
private:private这个关键字表示除类型创建者和该类型的内部方法之外的任何人都不能访问的元素(可以理解为C的static?)
protected:与private作用相当,差别仅在于继承类(Inheriting class)可以访问protected成员,但是不能访问private成员.
Java还有一种缺省(default)的访问权限,这种权限通常被称为“包访问权限(package access)”
因为在这种权限下,类可以访问在同一个包中的其它类的成员,但是在包之外,这些成员如同private一样
组合带来了极大的灵活性。新类的成员对象通常都被声明为private,使得使用该类的客户端程序员不能访问它们.
2.2 :继承
当你继承现有类型时,也就创造了新的类型.这个新的类型不仅包括现有类型的所有成员.
而且更重要的是它复制了基类的接口。
也就是说,所有可以发送给基类对象的消息同时也可以发送出导出类
由于我们通过可发送消息的类型可知类的类型,所以这也就意味着导出类与基类具有相同的类型.
有两种方法可以使基类与导出类产生差异。
1.:直接在导出类中添加新方法。
这些新方法并不是基类接口的一部分。这意味着基类不能直接满足你的所有需求,因此你必需添加更多的方法。
这种对继承简单而基本的使用方式,有时对你的问题来说确实是一种完美的解决方式。但是,你应该仔细考虑是否存在你的基类也需要这些额外方法的可能性。这种设计的发现与迭代过程在面向对象程序设计中会经常发生。
虽然继承有时可能意味着在接口中添加新方法(尤其是在以extends关键字表示继承的Java中),但并非总需如此.
2:以及其它使导出类和基类之间产生差异的方法是改变现有基类的方法的行为。这被称之为重载(overriding)。
要想重载某个方法,可以直接在导出类中创建该方法的新定义即可。你可以说:“此时,我正在使用相同的接口方法,但是我想在新类型中做些不同的事情。
关于继承,后面会有分析,这里我看的也是云里雾里~蒙头转向~