多态概述和演示;抽象类的概述;接口的概述和演示;

多态的概述及其代码体现

多态概述
    某一个事物,在不同时刻表现出来的不同状态。
    举例:      Cat c=new Cat();
                    Animal a=new Cat();
        猫可以是猫的类型。猫 m = new 猫();
        同时猫也是动物的一种,也可以把猫称为动物。动物 d = new 猫();        
多态前提:
    要有继承关系。
    要有方法重写。 其实没有也是可以的,但是如果没有这个就没有意义。
    要有父类引用指向子类对象。
        父 f =  new 子();

多态概述和演示;抽象类的概述;接口的概述和演示;

多态中的成员访问特点

多态中的成员访问特点
    成员变量:
        编译看左边,运行看左边。
    构造方法:
        创建子类对象的时候,会访问父类的构造方法,对父类的数据进行初始化。
    成员方法:
        编译看左边,运行看右边。
    静态方法:
        编译看左边,运行看左边。
        (静态和类相关,算不上重写,所以,访问还是左边的)

多态概述和演示;抽象类的概述;接口的概述和演示;

多态的好处:

   1.提高了代码的维护性(继承保证)
   2.提高了代码的扩展性(由多态保证) 

多态的弊端:

     不能直接使用子类的特有功能

解决问题
     把父类的引用强制转换为子类的引用。(向下转型)

多态概述和演示;抽象类的概述;接口的概述和演示;

抽象类的概述及其特点

   1.抽象类和抽象方法必须用abstract关键字修饰
        抽象类格式:        abstract class 类名 {}
        抽象方法格式:    public abstract void eat();
   2.抽象类不一定有抽象方法,有抽象方法的类一定是抽象类
   3. 抽象类中可以有构造方法,抽象类不能进行实例化,那么要构造方法有什么作用呢?
             用于子类访问父类数据时的初始化
   4.抽象类不能直接实例化那么,抽象类如何实例化?
             按照多态的方式,由具体的子类实例化。其实这也是多态的一种,抽象类多态。
   5.  抽象类的子类: 要么是抽象类 ,要么重写抽象类中的所有抽象方法
案例演示
    具体事物:猫,狗
    共性:姓名,年龄,吃饭

多态概述和演示;抽象类的概述;接口的概述和演示;

abstract不能和哪些关键字共存?
        private    冲突
        final      冲突
        static     不能共存 无意义

接口的概述及其特点

   接口特点:
    1.接口用关键字interface表示         格式:     interface 接口名 {}
    2.类实现接口用implements表示     格式:    class 类名 implements 接口名 {}
   接口不能实例化:
         那么,接口如何实例化呢?
         按照多态的方式来实例化。
   接口的子类:
        1.可以是抽象类。但是意义不大。
        2.可以是具体类。要重写接口中的所有抽象方法。(推荐方案)

接口的成员特点

    成员变量;只能是常量,并且是静态的。
            默认修饰符:public static final
            建议:自己手动给出。
    构造方法:接口没有构造方法。
    成员方法:只能是抽象方法。
            默认修饰符:public abstract
            建议:自己手动给出。

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

类与类,类与接口,接口与接口的关系
    类与类:
        继承关系,只能单继承,可以多层继承。
    类与接口:
        实现关系,可以单实现,也可以多实现。
        并且还可以在继承一个类的同时实现多个接口。
    接口与接口:
        继承关系,可以单继承,也可以多继承。

抽象类和接口的区别

成员区别
    抽象类:
        成员变量:可以变量,也可以常量
        构造方法:有
        成员方法:可以抽象,也可以非抽象
    接口:
        成员变量:只可以常量
        成员方法:只可以抽象    
  关系区别
     类与类
        继承,单继承
     类与接口
        实现,单实现,多实现
    接口与接口
        继承,单继承,多继承    
  设计理念区别
    抽象类 :    被继承体现的是:”is a”的关系。    抽象类中定义的是该继承体系的共性功能。
    接口 :  被实现体现的是:”like a”的关系。    接口中定义的是该继承体系的扩展功能。

案例演示
    动物类:姓名,年龄,吃饭,睡觉。
    动物培训接口:跳高
    猫继承动物类
    狗继承动物类
    部分猫继承猫类并实现跳高接口
    部分狗继承狗类并实现跳高接口

多态概述和演示;抽象类的概述;接口的概述和演示;