什么叫做类型?
具有相同的特性(数据元素)和行为(功能)的对象构成的集合
一个类就是一种数据类型,可以生成无数个对象(实例)
程序员就是通过定义一系列的类来解决问题的
什么叫对象?
对象具有状态、行为和标识(唯一的内存地址)
程序就是对象的集合,对象之间通过发送消息(请求)互相合作
每个对象都有接口(即方法)
每个对象都是一个服务提供者
编写一个程序就是创建一系列能够提供我们所期望的服务的对象(先在现有代码库中寻找这些对象是否已经存在),然后将这些对象组合起来,共同完成任务。
一个对象不应承担过多的功能
为什么要进行访问控制?
原因一: 让使用者无法触及他们不应该触及的部分,因为这些隐藏部分并不是用户解决问题所需的接口;这样做另一方面也让用户更容易看出哪些东西对他们来说是重要的,哪些东西可以忽略。
原因二: 允许库设计者改变接口内部的实现方式而不用担心会影响到用户。
访问指定词
public:任何人都可以调用
default:同一个包内可以访问
protected:本类和继承的类可以访问
private:只有类内部的方法可以访问
可复用性
what
直接使用类的对象或者用这个类来生成新的类,这个类作为新类的成员对象,通常被声明为private。这种方式叫”组合“:使用现有的类生成新的类,组合是一种”has-a(关系)“。
how
在建立新类时,应该优先考虑组合,而不是继承。
继承(inheritance)
why
当创建一个新类时,如果这个新类与现有类存在相似的功能,为了复用代码,通过继承可以减少很多编码工作。
what
1)is-a关系
继承只覆盖基类的方法
继承类完全等于基类
2)is-like-a关系
继承类添加了新的方法
基类无法访问继承类中新添加的方法
特点
单根继承结构:所有的类最终都继承自单一的基类——Object类。
相关概念
重写/覆盖(override):方法完全相同,只是实现不同
重载:方法名相同,参数不同。不能以返回类型区分不同方法,因为调用某个方法时可能不需要返回任何值。
多态(polymorphism)
why
想把一个对象不当做它所属的特定类型来对待,而是当做其基类对象来对待。这样可以编写出不依赖于特定类型的代码,不管增加多少新类型,原本的代码都不受影响。
how
后期绑定/动态绑定:直到运行时程序才确定被调用代码的地址。编译时只确保被调用方法的存在,但是并不知道被执行的确切代码。(补充:前期绑定/静态绑定 是指在运行前即编译时就已经确定了将要被执行的代码的地址)
相关概念
向上转型(upcasting):从具体的类型转型为泛化的类型,如将子类看做它的基类,向上 转型一般是安全的。
向下转型(downcasting):从泛化的类型转型为更具体的类型,如将基类看做子类,向 下转型一般是不安全的。
容器
why
用来存储对象的容器
what
其实容器也是一种java类型,如list/map/set
里面存储的是对象的引用
参数化类型
why
在泛型出现之前,容器内存储的对象都是Object类型,所以容器可以存储任何对象。这样带来的问题是:将对象置入容器时,它必须被向上转型为Object类型,因此会丢失自身份。当把它取出时,就获取了一个对Object对象的引用,而不是置入时的那个类型的对象的引用。参数化类型的作用就是让置入对象在取出时还能保持其身份。
what
编译器可以定制作用于特定类型上的类。如:编译器可以定制一个值接纳和取出Shape对象的容器。
在java中,参数化类型称为范型,一对尖括号,中间包含类型信息。
对象的生命周期
why
每个对象都占有了资源,尤其是内存。当我们不需要一个对象时,应该释放它所占有的资源。
how
java垃圾回收器来负责清理工作。
转载于:https://blog.51cto.com/ruoyiqing/1369963