java多态、抽象类、接口总结

1:多态

    (1)同一个事物在不同时刻表现出现的多种状态。

    (2)前提
        A:有继承或者实现关系
        B:有方法重写,因为抽象类中的抽象方法以及接口中的方法都必须被子类重写,调用才有意义。

        C:有父类或者父接口引用指向子类对象

    (3)多态中的成员访问特点
        Animao a = new dog();    //编译看左边,运行看左边

        A:成员变量    B:成员方法    C:静态方法

    (4)好处和弊端
        A:好处:维护性和扩展性好
        B:弊端:不能访问子类特有功能,如 Animao a = new dog();  创建的对象a只能看到Animao类中的变量方法以及静态方法,是看不到dog类中的 变量和方法的。
    (5)如何访问子类特有功能
        A:创建子类对象 如: dog d = new dog();
        B:向下转型:Animao a = new dog();  (dog) a 实现向下转型
    (6)多态中的转型
        A:向上转型:子到父
        B:向下转型:父到子(加强制转换)

2:抽象类
    (1)抽象类的特点:
        A:抽象类或者抽象方法必须用abstract修饰
        B:抽象类中不一定有抽象方法,但是有抽象方法的类一定是抽象类
        C:抽象类不能实例化,可以按照多态的方式实例化。
        D:抽象类的子类
            a:要么是抽象类
            b:要么重写抽象类中的所有抽象方法
    (2)抽象类的成员特点:
        A:成员变量
            可以是变量,也可以是常量
        B:可以有构造方法
            不能实例化,有构造方法意义:用于子类访问父类数据的初始化。
        C:成员方法
            可以是抽象的,也可以是非抽象的
     (3)两个小问题
        A:如果你看到一个抽象类中居然没有抽象方法,这个抽象类的意义何在? 不让别人创建
        B:abstract不能和哪些关键字共存?
            a:private 冲突        b:final 冲突      c:static 无意义

    3:接口
        (1)通常使用接口来扩展功能。
        (2)接口的特点:
            A:定义接口用关键字interface
                格式是:interface 接口名 {}
            B:类实现接口用关键字implements 
                格式是:class 类名 implements 接口名 {}
            C:接口不能实例化
            D:接口的子类
                a:要么是抽象类
                b:要么重写接口中的所有方法
         (3)接口的成员特点
            A:成员变量
                只能是常量。
                默认修饰符:public static final
            B:成员方法
                只能是抽象方法。
                默认修饰符:public abstract 
        (4)类与接口的关系
            A:类与类
                继承关系,只能单继承,可以多层继承。
            B:类与接口
                实现关系,可以单实现,也可以多实现。
                还可以在继承一个类的同时实现多个接口。
           C:接口与接口
                继承关系,可以单继承,也可以多继承
        (5)抽象类和接口的区别?
           A:成员区别
                    抽象类:
                        成员变量:可以是变量,也可以是常量
                        构造方法:有
                        成员方法:可以是抽象的,也可以是非抽象的
                   接口:
                       成员变量:只能是常量。默认修饰符:public static final
                       成员方法:只能是抽象的. 默认修饰符:public abstract
           B:关系区别
                    类与类:继承关系,只能单继承。可以多层继承。
                    类与接口:实现关系,可以单实现,也可以多实现。还可以在继承一个类的同时实现多个接口。
                    接口与接口:继承关系,可以单继承,也可以多继承。
          C:设计理念区别
                   抽象类:被继承体现的是:”is a”的关系。在抽象类中定义的一般是共性功能

                   接口:被实现体现的是:”like a”的关系。在接口中定义的一般是扩展功能


接口是常量值和方法定义的集合。接口是一种特殊的抽象类

java类是单继承的。classB Extends classA

java接口可以多继承。Interface3 Extends Interface0, Interface1, interface……

不允许类多重继承的主要原因是,如果A同时继承B和C,而B和C同时有一个D方法,A如何决定该继承那一个呢?

但接口不存在这样的问题,接口全都是抽象方法继承谁都无所谓,所以接口可以继承多个接口。

注意:

1)一个类如果实现了一个接口,则要实现该接口的所有方法。

2)方法的名字、返回类型、参数必须与接口中完全一致。如果方法的返回类型不是void,则方法体必须至少有一条return语句。

3)因为接口的方法默认是public类型的,所以在实现的时候一定要用public来修饰(否则默认为protected类型,缩小了方法的使用范围)。


  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值