JAVA多态抽象类接口学习

时光毁灭记忆、已成空白 提交于 2019-12-01 02:45:41

面向对象多态

多态的概念
    多态是面向对象编程语言的重要特性,它允许基类的指针或引用指向派生类的对象,而在具体访问时实现方法的动态绑定。Java 对于方法调用动态绑定的实现主要依赖于方法表,但通过类引用调用(invokevitual)和接口引用调用(invokeinterface)的实现则有所不同。

参考链接来自https://www.cnblogs.com/kaleidoscope/p/9790766.html

多态中的成员访问特点

多态中用于变量
    编译看左边、运行看左边。
多态用于方法(普通方法)
    编译看左,运行看右。
多态用于静态方法
    编译看左,运行看左

多态问题

不能使用子类特有的功能
    解决办法就是使用向上转型和向下转型(强转)的办法。

抽象类的概念

抽象类在现实生活中没有实体。但是在代码中可以封装共性而且还避免了直接初始化。

抽象类成员特点

成员变量:既可以是变量,也可以是常量。
构造方法: 有构造方法 但是不能直接初始化,可以使用子类初始化和子类多态初始化。
成员方法:可以使抽象的,也可以是非抽象的。
抽象方法:强制要求子类做的事情(重写)。

abstract 在修饰方法时不能和哪些关键字共存

private   冲突
final     冲突
static    冲突

接口

接口个人认为是一个没有构造方法的类,可以继承。可以有成员变量和方法。

接口的成员特点

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

接口和类以及接口的关系

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

抽象类和接口的区别

成员的区别:
        抽象类:
            成员变量:可以变量,也可以常量
            构造方法:有
            成员方法:可以抽象,也可以非抽象
        接口:
            成员变量:只可以常量
            构造方法:无
            成员方法:只可以抽象  
设计理念区别:
    抽象类  被继承体现的是:”is a”的关系。 抽象类中定义的是该继承体系的共性功能。
    接口   被实现体现的是:”like a”的关系。   接口中定义的是该继承体系的扩展功能。
    注意:
        JDK1.8之后在接口中提供了用default修饰的方法,可以给出功能的具体实现,子类可以继承下去用。
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!