编程是思想,是用抽象的方法解决科学的问题。
面向对象
目的:
- 代码重用
- 接口重用
封装
封装,也就是把客观事物封装成抽象的类,并且类可以把自己的数据,数据操作,方法只让可信的类或者对象操作,对不可信的进行信息隐藏。
- 问题域中该有哪些类,哪些对象
- 每个类,每个对象中该具有什么属性,什么方法,什么参数
- 类与类之间是什么关系
- 封装类的考虑:名词
- 定义属性的考虑:不脱离具体的应用环境(不建议直接访问某各类中的属性,可以定义为privete)
- 方法的封装:站在主语的角度看待问题,描述问题和解决问题
- 如通过set/get对类的属性进行操作,降低耦合对
1 |
|
Java的四种访问控制符
default
:默认的,在同一包内可见,不使用任何修饰符。private
:私有的,在同一类内可见。public
:共有的,对所有类可见。protected
:受保护的,对同一包内的类和所有子类可见。
继承
它可以使用现有类的所有功能,并在无需重新编写原来的类的情况下对这些功能进行扩展。
1 |
|
继承的3种实现方式
- 实现继承是指使用基类的属性和方法而无需额外编码的能力;
- 接口继承是指仅使用属性和方法的名称、但是子类必须提供实现的能力;
- 可视继承是指子窗体(类)使用基窗体(类)的外观和实现代码的能力。
多态
所谓多态就是指一个类实例的相同方法在不同情形有不同表现形式。多态机制使具有不同内部结构的对象可以共享相同的外部接口
多态的3个特征
- 有继承,实现接口类是继承的一种
- 有重写,重写父类(抽象类)中的方法
- 有父类的引用指向子类的对象
抽象类与接口类的选择
- 没有具体事物作为参考对象,或者事物种类繁多就设计为
抽象类
- 如果考虑一类事物或者几类事物之间的共同特征和相同属性,就设计为
接口类
抽象类详解:
- 含有抽象方法的类必须是抽象类,抽象类必须被继承,抽象方法必须被重写,或则重新声明定义,或则将子类也定义成抽象类
- 抽象类不能被实例化,也就是不能创建对象
- abstract 抽象方法:只需要声明也不需要实现
- 子类重写实现抽象方法(抽象方法一定要被重写,或者再定义声明一遍)
多态的优点
- 每个Java类只能单继承(类/抽象类)多实现(接口)
- 可扩展性(Extensibility)
- 多个无关的类可以实现同一个接口
- 一个类可以实现多个无关的接口
重载与重写
- 方法重载(overload)实现的是编译时的多态性(也称为前绑定)
- 方法重写(override)实现的是运行时的多态性(也称为后绑定)。
- 覆盖(重写),是指子类重新定义父类的虚函数的做法。
- 重载,是指允许存在多个同名函数,而这些函数的参数表不同(或许参数个数不同,或许参数类型不同,或许两者都不同)。
1 |
|