1、类,实际上就是一个数据类型。
2、要获取对象,就必须产生对对象的请求。这些请求由对象的接口(interface)所定义
Light lt =new Light();
类型 引用 创建新对象
lt. on();
对象名称 消息请求
3、对象是服务的提供者
4、类只暴露必要的部分,隐藏其他的部分。将实现隐藏起来可以减少bug。
5、良好的类分离的接口和实现,用public定义接口,用private定义实现。
6、protected:对于其子类是public,对于其他则是private
7、新的类可以由多个对象组合。先考虑组合,再考虑继承。
8、继承:复制现有的类(基类,父类),然后添加或修改它。一个基类包含所有导出类共享的特性。
导出类无法访问基类的private成员。导出类也复制了基类的接口。发给基类的消息也可以发给导出类。
9、两种方法使基类与导出类产生差异:一、在导出类中添加新方法。二、改变基类的方法,覆盖(overriding)
is a(无新方法)与is like a(有新方法)10、将一个对象当做其基类的对象来对待,而不当做特定类型来对待。
11、多态:忽略类型的具体细节,仅仅与基类交互。即向上转型。
void doStuff (Shape s){
s.erase();
s.draw();
}
Circle c = new Circle();
Line l = new Line();
doStuff(c);
doStuff(l);
12、abstract类,抽象基类:希望基类仅仅表示导出类的接口。不希望创建基类的对象,只希望将对象向上转型到基类
13、abstract方法,接口方法:这是一个从此基类继承来的所有类型都具有的接口方法,。只是此时没有给它设计实现。可以在基类被继承时,实现抽象方法。
抽象方法可以将一个方法置于接口中而不必提供方法体
14、java在堆(内存池)中动态的创建对象,用new关键字来构建此动态实例。
15、容器中放任意多少个对象。通过迭代器进行元素操作
16、所有类都继承一个基类,object
17、向下转型:若容器只存储object,将对象引用置入容器中必须向上转型成Object。取出对象后用向下转型为更具体的类型。