面对对象设计方式
1:万物皆对象
2:程序是对象的集合
3:每个对象都是由其他对象构成的存储
4:每个对象是其特有的类型
5:某一特定类型都能接口同样的消息
总结:对象具有状态、行为、标识。每一个对象都拥有自己的内部实现。给出对象状态(属性)和行为(方法)每个对象在内存空间中都有一个唯一的地址
类的理解
类具有相同的特性(数据元素)和行为(方法)。每个对象都拥有至少一个接口,我们向对象发送消息。这个对象就知道此消息的目的,然后去执行相应的代码逻辑。每个对象都拥有不同的属性和行为。
Persion p1 = new Person("张三");
Persion p2 = new Person("李四");
Persion p3 = new Man("王五");
p1,p2,p3都是同一类,但是拥有不同的属性。
每个对象是提供服务者,程序本身就是提供服务,对象调用其他对象实现这个目的。
封装思想
a:访问权限
处理类 分为两个角色:类创建者(提供者) 和类调用者(消费者)。提供者只需要暴露必须的部分。
1:把大部分实现逻辑隐藏起来,不会把所有东西赤裸裸暴露给别人
2:让消费者不必理会内部具体实现。提供者可以更改自己的内部实现,消费者并不知道
b:复用接口
1:可以通过组合来实现复用接口。
2:通过继承来复用接口
继承
可以直接使用基类的接口,并实现自己新的接口逻辑,也可以覆盖overriding基类的接口,实现自己的逻辑。
一、is-a概念
is-a的意思是说:子类即父类。子类继承父类并未做任何修改
二、has-a概念
has-a说的是一种组合关系
三、is-like-a概念
子类继承父类,并添加或者修改了部分实现。并不完全是父类,异于父类的具体细节
多态
依赖抽象而不依赖具体,运行时不知道具体类型,可以使用子类类型传递基类类型,具体实现时子类向上转型。
Animals rabbit= new Rabbit();
Animals bird= new bird();
void move(Animals animals);
move(rabbit);
抽象和接口
接口里都是抽象方法,抽象类有部分具体实现。抽象类可以把公共的部分实现出来,抽象部分让子类自己去实现。
接口可以和抽象结合起来使用