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