A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 18923420612 中级黑马   /  2016-9-2 08:25  /  987 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

多态:       
        前提:
                要有继承关系
                要有方法重写
                要有父类引用指向子类对象
       
        成员变量的访问:
                编译和运行都看左边
        成员方法的访问:
                编译看左边, 运行看右边
        静态方法:
                编译和运行都看左边(静态方法属于类)
       
        向上转型和向下转型:
                向上转型: 父类引用指向子类对象, 对应基本数据类型的自动类型提升
                向下转型: 父类强转成子类,  对应基本数据类型的强制类型转换
                必须要先有向上转型, 再有向下转型

        多态的好处和弊端:
                弊端:
                        不能使用子类的特有属性和行为, 需要向上转型和向下转型才可以
                好处:
                        提高了代码的维护性(由继承保证)
                        提高了代码的扩展性(由多态保证)
                应用场景:
                        可以当作方法的形参去接收任意的子类对象

抽象类(abstract):
        特点:
                修饰类: abstract class 类名{}
                修饰方法: public abstract 返回值类型 方法名();
                抽象类中不一定有抽象方法, 但是有抽象方法的一定是抽象类
                抽象类的子类:
                        要么是抽象类
                        要么是重写了所有抽象方法的具体子类
                抽象类不能实例化, 必须通过具体的子类去创建对象
       
                 
        成员的特点:
                成员变量: 既可以是变量 也可以是常量, abstract不能修饰成员变量
                构造方法: 有.
                成员方法: 既可以是抽象的, 也可以是非抽象的.
       
        abstract不能共存的关键字:
                static: 直接通过类名去调用一个抽象方法是没有意义的
                private: 被private修饰的方法不能被子类访问, 但是被abstract修饰的方法强制子类去重写, 矛盾
                final: 被final修饰的方法不能被子类重写, 但是被abstract修饰的方法强制子类去重写, 矛盾

接口: interface
      接口特点
        *class 类名 implements 接口名
        *接口不能被实例化, 只能通过实现了接口中所有抽象方法的具体子类去创建对象
        *接口的子类:
                * 可以是抽象类
                * 实现了接口中所有抽象方法的具体子类

      成员特点:
                构造方法: 无
                成员变量:
                 *只能是常量
                 *修饰符: public static final
                成员方法:
                 *只能是抽象方法
                 *修饰符: public abstract

      关系:
                类与类:
                        单继承
                接口与接口:
                        既可以单继承, 也可以多继承
                类与接口:
                        既可以单实现, 也可以多实现, 还可以在继承一个类的基础上去实现多个接口

      接口与抽象类的区别:
                设计理念区别:
                        抽象类: "is a" 的关系, 抽象类中定义的是继承体系中的共性功能
                        接口:   "like a" 的关系, 接口中定义的是继承体系中的扩展功能
       

评分

参与人数 1黑马币 +20 收起 理由
东方乔恩 + 20 很给力!

查看全部评分

1 个回复

倒序浏览
谢忠良 来自手机 初级黑马 2016-9-2 09:46:16
沙发
背的不错
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马