黑马程序员——基础知识——多态

------ Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------

Day09

09.01 多态的概述及其代码体现

       1、多态(polymorphic)概述:事物存在的多种形态

       2、多态前提

              要有继承关系 

              要有方法重写

              要有父类引用指向子类对象

       3、案例演示

              代码体现多态

黑马程序员——基础知识——多态_第1张图片

09.02 多态中的成员访问特点之成员变量

       成员变量

              编译看左边(父类),运行看左边(父类)


黑马程序员——基础知识——多态_第2张图片
黑马程序员——基础知识——多态_第3张图片

09.03 多态中的成员访问特点之成员方法

       成员方法

              编译看左边(父类),运行看右边(子类)


黑马程序员——基础知识——多态_第4张图片
黑马程序员——基础知识——多态_第5张图片

09.04 多态中的成员访问特点之静态成员方法

       静态方法

              编译看左边(父类),运行看左边(父类)

              (静态和类相关,算不上重写,所以,访问还是左边的)

              只有非静态的成员方法,编译看左边,运行看右边

              所以静态就不叫重写,自己是自己的


黑马程序员——基础知识——多态_第6张图片

09.05 超人的故事

       案例分析

              通过该案例帮助理解多态的现象


黑马程序员——基础知识——多态_第7张图片

09.06 多态中向上转型和向下转型

       案例演示

              详细讲解多态中向上转型和向下转型

              Person  p =  new  SuperMan();向上转型 父类引用指向子类对象

              SuperMan  sm  =(SuperMan)p;  向下转型  强制转换 大强转为小    


黑马程序员——基础知识——多态_第8张图片
黑马程序员——基础知识——多态_第9张图片

09.07 多态的好处和弊端

       1、多态的好处

              提高了代码的维护性(继承保证)

              提高了代码的扩展性(由多态保证)

       2、案例演示

              多态的好处

              可以当做形式参数,可以接收任意子类对象

       3、多态的弊端

              不能使用子类的特有属性和行为

       4、案例演示

              method(Animal a)

              method(Cat  c)



09.08 多态中的题目分析题

       1、看下面程序是否有问题,如果没有,说出结果


黑马程序员——基础知识——多态_第10张图片

09.09 抽象类的概述及其特点

       1、抽象类概述:抽象就是看不懂的

       2、抽象类特点

              A抽象类和抽象方法必须用abstract关键字修饰

                     abstract class 类名{}  抽象类

                     public abstract void eat();  抽象方法

              B抽象类不一定有抽象方法,有抽象方法的类一定是抽象类或者是接口

              C抽象类不能实例化(创建对象),那么,抽象类如何实例化呢?

                     按照多态的方式,由具体的子类实例化,其实这也是多态的一种,

抽象类多态

       抽象类就是比普通类多了一个定义抽象方法的可能而已

D抽象类的子类

              要么是抽象类

              要么重写抽象类中的所有抽象方法

       3、案例演示

              抽象类特点


黑马程序员——基础知识——多态_第11张图片

09.10 抽象类的成员特点

       1、抽象类的成员特点

              成员变量:既可以是变量,也可以是常量。abstract是否可以修饰成员变量?不能修饰成员变量

              构造方法:有

                     用于子类访问父类数据的初始化

              成员方法:既可以是抽象的,也可以是非抽象的

       2、案例演示

              抽象类的成员特点

       3、抽象类的成员方法特性:

              抽象方法 强制要求子类做的事情

              非抽象方法 子类继承的事情,提高代码复用性


黑马程序员——基础知识——多态_第12张图片

09.11 葵花宝典

       案例演示

              抽象类的作用


黑马程序员——基础知识——多态_第13张图片

09.12 抽象类练习猫狗案例

       案例演示

              具体事物:猫 狗    

              共性:姓名 年龄 吃饭

              特性:抓老鼠  看家



09.13 抽象类练习老师案例

       1、案例演示

              具体事物:基础班老师,就业班老师

              共性:姓名、年龄、讲课

              具体事物:基础班学生 ,就业班学生

              共性:姓名、年龄、学习



09.14 抽象类练习员工案例

       案例演示

              假如我们再开发一个系统时需要对程序员类进行设计,程序员包括3个属性:姓名、工号、工资

              经理,除了含有程序员的属性外,另外还有一个奖金属性

              请使用继承的思想设计出程序猿类和经理类,要求类中提供必要的方法进行属性访问


黑马程序员——基础知识——多态_第14张图片

09.15 抽象类中的面试题

       面试题1

              一个抽象类如果没有抽象方法,可不可以定义为抽象类?如果可以,有什么意义?可以,这么做的目的只有一个,就是不让其他类创建本类对象,交给子类完成

       面试题2

              abstract不能和那些关键字共存(final,private,static)


黑马程序员——基础知识——多态_第15张图片

09.16 接口的概述及其特点

       1、接口概述:接口中全是抽象方法

              从狭义的角度讲就是指java中的interface

              从广义的角度讲对外提供规则的都是接口,电脑等等

2、接口特点

       接口用关键字interface表示

              interface接口名 {}

       类实现接口用implements表示

              class类名implements 接口名 {}

              接口不能实例化

                     那么,接口如何实例化呢?按照多态的方式来实例化

              接口的子类

                     可以是抽象类,但意义不大

                     可以是具体类,要重写接口中的所有抽象方法(推荐方案)

       3、案例演示:接口特点


黑马程序员——基础知识——多态_第16张图片

09.17 接口的成员特点

       1、接口成员特点

              成员变量:只能是常量,并且必须是静态的公共的  

                            默认修饰符:public static final

                            建议:自己手动给出

              构造方法:接口没有构造方法

              成员方法:只能是抽象方法

                            默认修饰符:public abstract

                            建议:自己手动给出


       2、案例演示:接口成员特点


黑马程序员——基础知识——多态_第17张图片

09.18 类与类,类与接口,接口与接口的关系

       1、类与类,类与接口,接口与接口的关系

              A类与类:继承关系,只能单继承,可以多层继承

              B类与接口:

                     实现关系,可以单实现,也可以多实现

                     并且还可以在继承一个类的同时实现多个接口

              C接口与接口

                     继承关系,可以单继承,也可以多继承

接口的出现打破了单继承的局限性,接口可以多实现

       2、案例演示

              类与类,类与接口,接口与接口的关系


黑马程序员——基础知识——多态_第18张图片

09.19 抽象类和接口的区别

       1、成员区别:

              抽象类:     成员变量:可以变量,也可以常量

                                   构造方法:有//为给子类进行初始化

                                   成员方法:可以抽象,也可以非抽象

              接口:         成员变量:只可以常量public static final

                                   构造方法:没有

                                   成员方法:只可以抽象public abstract

       2、关系区别

              类与类:继承,只能单继承

              类与接口:实现,单实现,多实现

              接口与接口:继承,单继承,多继承

       3、设计理念区别

              抽象类 被继承体现的是“is a”的关系。抽象类中定义的是该继承体系的共性功能

              接口   被实现体现的是“like a(谁像谁)”的关系。接口中定义的是该继承体系的扩展功能,个性功能

 

09.20 猫狗案例加入跳高功能分析及其代码实现

       案例演示

              动物类  姓名 年龄 吃 睡

              猫和狗

              动物培训接口:跳高  相当于扩展功能



你可能感兴趣的:(黑马程序员——基础知识——多态)