面向对象多态
多态的概念 多态是面向对象编程语言的重要特性,它允许基类的指针或引用指向派生类的对象,而在具体访问时实现方法的动态绑定。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修饰的方法,可以给出功能的具体实现,子类可以继承下去用。