面向对象
面向对象编程
本质:以类的方式组织代码,以对象的组织(封装)数据
抽象
三大特性:封装 继承 多态
创建对象
-
使用new关键字创建对象:
-
使用new关键字创建的时候,除了分配内存空间外,还会对创建好的对象进行默认初始化,以及对类中构造器的使用
Demo demo=new Demo();这样的写法代表有引用,用demo这个名字可以去操作这个对象,但是直接new的话就是匿名对象,没有引用指向它,只能在new的一瞬间做一些事情,后来就会被当成垃圾回收掉
三大性质
封装
封装的作用:
1.提高程序的安全性,保护数据
2.隐藏代码的实现细节
3.统一接口 4.增强系统的可维护性
将对象数据隐藏 不再可以直接查看 修改
- 属性私有,get/set
封装的理解:禁止使用对象中数据,通过接口访问包括get和set,get获取对象set设置对象。
- 快捷键 alt+insert get set
继承
-
extends关键字,extends 类与类的关系 is a 关系
-
Java只有单继承 ,没有多继承
-
类中私有的东西无法被继承
-
Object类是所有类的祖先类
通过 ctrl h 打开继承树查看继承关系
super和this
super的注意点:
- super调用父类的构造方法,必须放在子类构造构造器的首行;
- super必须出现在子类的方法或构造方法中;
- super和this不能同时调用构造方法、
this的注意点:
1.代表对象不同
- this: 子类的对象
- super: 父类的对象
2.前提:
- this: 没有继承也可以使用
- super: 只能在继承条件下才能用
3.构造方法:
- this():本类的构造方法
- super(): 父类的构造方法
方法重写
前提:需要有继承关系,子类重写父类的方法
要求:
- 方法名必须相同
- 参数列表必须相同
- 修饰符 范围可以扩大:public>protected>Default>private(测试不成功???)
- 抛出的异常: 范围可以被缩小 但不能扩大
- 重写,子类的方法和父类必须一致 方法体不同
- 子类和父类都为静态类非static,public修饰
意义:
- 子类不一定需要或不一定满足
快捷alt+insert +override
构造器
定义:构造器也可以叫构造方法,创建对象时必须调用
特点:
- 必须和类的名称相同
- 必须没有返回值,也不能用void
作用:
- new的本质是调用构造器
- 初始化对象值
注意:有但定义了有参构造,必须定义无参构造
快捷键Alt+Insert
程序设计核心
高内聚,低耦合
- 高内聚:系统的架构的完整尽可能少的依赖外部资源。
目的:单个系统的维护、运行等尽可能低的影响、依赖于外部其它系统。
- 低耦合:系统内部各个模块间的依赖关系尽可能的低。
目的:各个模块的维护的影响的范围小,整个系统的灵活性提高(系统的改变,即各个模块的增、删、改容易),降低系统的维护成本,能尽可能的提高系统的多功能性。
原因:系统变更成本低,具备实现多功能的条件。