被客户不断变化的需求折磨:客户的需求总是在不断变化过程中
原因很简单、客户根本不知道自己需要什么东西,先给你提出一个需求。等你程序开发出来了,
他用了,可能跟他想的、说的不一样,伴随着整个软件开发的生命周期。
我们无法阻止客户变更需求,我们使用面向对象的设计方法,能让我们程序适应需求的变化。
继承的好处:1:提高了代码的复用性。
2:让类与类之间产生了关系,提供了另一个特征多态的前提
面向对象:先抽象再具体。好处是什么?Boss谈话:我们要好好努力,为xxx而努力奋斗。
1、只有方法的定义没有方法体;(就没有完成的方法)
2、用abstract修饰的方法;
eat不太好写,亚洲人吃饭用筷子,欧美人用刀叉,印度人用手!怎么办?稍后解释
某个类中含有抽象方法,那么就称之为抽象类,同样有abstract修饰。
1.抽象类不能够生成对象。只可以用来继承。(抽象类天生就是用来当爹的!)
2.一个类中如果包含抽象方法,那么这个类必须被声明成抽象类。
3.抽象类的子类一定要必须去实现父类的抽象方法。
4.若子类不能帮助父类实现抽象,那么子类就是一个抽象类。只能有子类的子类再去完成
5.如果一个类中没有抽象函数,这个类也可以被声明成抽象类。(为啥?防止这个类被生成对象)
1、抽象类不能生成对象。2、构造函数用于生成类的对象。
结论:???见示例
抽象类不能生成对象,但是却可以拥有构造函数,是为子类调用准备的。
汽车?开汽车drive()的方法没有办法给具体的方法体?手动档自动档开法不一样!
无法给出具体的驾驶方法,要看具体类型的汽车再来定义具体的驾驶方法。
那么把这个方法定义成抽象的,把这个汽车类也定义成抽象的。
现实世界的接口:
例如USB接口,可以接这么多设备(手机、mp3、电扇、鼠标、冰箱)
(定义了一个标准:传递数据标准、供电标准)
面向对象世界的接口:
定义了接口,就是定义了调用对象的标准。
接口就是比较纯粹的抽象类;
在接口中可以省略abstract,默认都是抽象方法。
(方法前面不用写abstract,接口里的方法都是public的。注意:接口就不允许有非抽象方法。)
接口也不能实例化生成对象,只能被实现(关键字:implements)。
实现接口就必须要实现接口中的抽象方法。
一个类可以实现多个接口(手机可以实现usb标准,也可以实现wifi接口,还可以实现蓝牙接口)
为什么要使用接口?
工厂方法模式(非常常用的设计模式)
接口:定义接口interface、实现接口(implements)
接口就不允许有非抽象方法。(只是将abstrct省略了而已)
★接口实现动态多态,也可以使用接口的引用指向实现类的对象!
四、final:关键字(修饰词)是最终的,不可以修改的意思。
有三种用法:
第一种:用来修饰变量,是不可以被修改的。一旦有的值就不能被修改。
public final int age = 20;
第二种:用来修饰方法,是不能被子类覆盖的。
public final void fianlTest(){}
第三种:用来修饰类:那么类就不能被继承
final class FinalDo{}