什么是面向对象?
(以下是我的理解)
**1.B事 == 对象之间发生交互
对象抽象成程序中的类;对象所拥有的特征与行为,抽象成类中的属性和方法,交互就是对象发生行为,抽象成类的方法调用
现实中一件事,A导致B怎么样,A和B抽象成程序中的类
导致 可以 是 A类中的方法 ,怎么样 可以是B类中的方法
面向对象编程:
就是将现实世界中的事情(如:李华游玩长城),变成 person { name = “李华” ;function action{ “游玩长城”}} 。
开发过程只需关注对象
2.面向对象的三大特征:继承 / 封装 / 多态
继承 – super类和子类的继承关系,父类公有的属性和方法 子类全都拥有,而任何子类定义的 父类无法使用。
封装 – 将现实中的具体事物抽象成程序中的对象,并且通过设置访问级别来保证安全性。
多态 – 动态多态: A 继承 B; B b = new A(); (子类A重写父类B方法) b.AFunc();
好处:代码扩展性好 可读性强 维护简单
什么是类?
- 字面理解: 类是具有共同特征的事物集合,是抽象化的,不存在实体与之对应。
- 面向对象编程的类:类就是对这群事物的共同特征进行 数据化。定义概括的属性和方法。
类的种类有哪些:
类型 | 继承 | 实现接口 | 方法 | 属性 |
---|---|---|---|---|
普通类 | 单继承 | 接口多实现 | (overLoading)方法名相同,参数不相同 | |
抽象类 | 单继承 | 接口多实现 | (overLoading)方法名相同,参数不相同; 抽象类可以没抽象方法,有抽象方法必须是抽象类 | |
接口 | / | 接口多实现 | 方法必须公有,必须抽象未实现; | 属性类型:public final |
补充:
2019/02/11 :类的构造顺序: 父类 —>子类 (子类的构造方法第一行有一个super();就是有时候省略掉了而已)
2019/02/12:
类的加载顺序:静态-》非静态,属性-》代码块-》构造方法
属性加载 是先申请内存空间-》初始化-》使用 (申请内存空间指的是先分配空间,基本类型变量如int类型先设置为0,引用类型设置为null,然后按顺序赋值)
强调的一点:静态内容与类相关,非静态内容与实例相关 ,静态内容只在第一次调用类时初始化保存至永久代,非静态内容每次实例化都会重新设置一份保存至堆中
2019/02/13;看了一篇文章讲 面向对象和面向过程区别 ,非常好吸收:https://blog.youkuaiyun.com/jerry11112/article/details/79027834