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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© wx_iAuO26mH 中级黑马   /  2015-7-29 21:46  /  247 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

day09笔记
1、多态:
        概念:对象在不同时刻表现出来的不同状态。
        针对引用型:
                编译期间状态
                运行期间状态
                        Person p = new Person();
                举例:
                        水(水,冰,水蒸气)

        前提:
                A:要有继承关系或者实现关系
                B:要有方法重写
                C:要有父类引用指向子类对象,或者父接口对象指向子类对象
                如:Fu fu = new Zi();

多态间的成员特点:方法有重写,而变量没有。
        A:成员变量
                        编译看左边,运行也看左边
        B:成员方法
                        编译看左边,运行看右边(所以真正执行的是子类中的方法)
       
多态的弊端:(继承的弊端:强耦合)
        父类引用不能使用子类特有功能。
        如果想使用的话:
        (引用类型)
                向上转型(小到大)Fu fu = new Zi();
                向下转型(大到小)Zi zi = (Zi)fu;这个时候就能使用子类中的特有方法了
        (基本类型)
                隐式转换(小到大)
                强制转换(大到小)
       
多态的好处:
        提高代码的扩展性和可维护性
       
抽象类:类中有方法只有方法声明没有方法体的类。抽象类不能创建对象。
什么时候定义抽象类:如果一个类中有抽象方法,那么这个类就可以定义为抽象类。
抽象方法:只有方法声明没有方法体的方法,java提供了一种表示形式:抽象方法。用abstract修饰

抽象类的特点:
        A:抽象类和抽象方法用关键字abstract修饰
        B:有抽象方法的类一定是抽象类(或者接口)
          抽象类中不一定有抽象方法,可以定义一个空的抽象类
        C:抽象类不能被实例化(因为抽象类是具体的类,所以不能创建对象)
          那么怎么实现实例化呢?
                可以通过子类对象实现实例化。
        D:如果一个类继承抽象类,那么这个要么本身是抽象类。要么这个类重写父类所有抽象方法

在继承中我们有时候为什么要继承抽象类呢?
        答:抽象类的作用就是:强制要求子类必须完成某些功能。

抽象类中成员特点:
        a:成员变量  可以有成员变量也可以有常量
        b:构造方法  有构造方法(可以用于子类访问父类数据前,对数据进行初始化)。
        c:成员方法  有抽象方法也可以有非抽象方法
                抽象方法是为了让子类做某些事情
                非抽象的方法是为了让子类继承,提高代码复用性

2、接口
        定义:在抽象类中只有抽象方法。针对这种情况java提供了一种更加抽象的表示形式,接口。
        用interface表示接口。
        定义格式:
                interface A
                {
                        public abstract void eat();
                }
        有了接口该怎么用呢?
                必须用具体的类来实现。
                通过implements
                格式:class 类名 implements 接口名
                                {   重写接口中的抽象方法 }

        接口多态:
                Animal a = new Cat();

                注意:接口不是类,我们只是把它看作类。接口是接口,类是类。
                abstract不能和哪些关键字共存:final、static、private

        基本特点:
                1、接口不能被实例化
                2、接口中的方法要么被子类实现,要么子类也是抽象类
       
        注意:接口允许多继承(接口不是类)

        接口中的成员特点:
                成员变量 -- 接口中只有常量。(因为接口中的成员变量其实有默认修饰符 public static final 修饰。推荐永远自己给出修饰符)
                构造方法 -- 没有构造方法(接口不需要对成员初始化,因为变量都是静态的,随着类的加载而加载)。任何类如果没有继承父类,那么这个类就继承了object类。
                成员方法 -- 成员方法都是抽象的,默认就是被public abstract修饰的。推荐:永远自己给出修饰符。

        类与接口的关系:
                是实现关系,可以单实现,也可以多实现。
        接口与接口的关系:
                是继承关系,可以单继承,也可以多继承。
        类与类之间的关系:
                是继承关系,只可以单继承,课多层继承。
               
       
注意:所有类都直接或者间接的继承自object类

        接口的思想特点:
                接口是对外暴露的规则;
                是程序的功能扩展;
                接口的出现降低了耦合性;
                接口可以用来多实现;
                接口与类之间是实现关系,而且类可以继承一个类的同时实现多个接口;
                接口与接口之间可以有继承关系;

抽象类与接口的区别;
        1.成员特点:
                抽象类:
                        成员变量:可以是变量,也可以是常量
                        构造方法:有构造方法
                        成员方法:可以是抽象方法,也可以是非抽象方法
                接口:
                        成员变量:只能是常量。默认修饰符是:public static final
                        成员方法:只能是抽象方法,默认修饰符是:public abstract
                        构造方法:没有构造方法
        2.关系特点不同:
                类与类:
                        继承关系,只能单继承,可以多层继承
                类与接口:
                        实现关系可以是单实现,可以是多实现
                        还可以在继承一个类的同时,实现多个接口
                接口与接口:
                        继承关系,可以是单继承,也可以是多继承
        3.设计理念的区别:
                抽象类被继承,这个类中定义的是整个继承体现的共性内容。
                接口被实现,这个接口中定义的是整个体现的扩展内容。



1 个回复

倒序浏览
赞一个,不错
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马