标签:不同的 stat extends 使用 abs ring 否则 示例 特殊
多态中,编译看左边,运行看右边
多态的前提是继承
要有方法的重写
父类引用指向子类对象,如:Animal a = new Dog(); -- 小到大,向上转型
普通成员方法
(由于存在重写, 所以调用了父类的方法声明, 使用了子类的方法体)
(由于不存在重写, 所以直接使用父类的)成员变量
(静态资源随着类地加载而加载, 重写的静态方法和父类的静态方法不是同一个类, 所以不是重写)静态方法
抽象类可实现多态. 关键字: abstract
使用abstract关键字的方法为抽象方法
注意: 如果这个类有抽象方法, 那么这个类也必须是抽象类, 用abstract
修饰. 抽象类里面可以有普通方法
子类如果继承了抽象的父类, 子类两条路: 把所有抽象方法都重写 或者 是一个抽象子类
抽象类本身不能创建对象, 但是为什么提供构造方法? 是为了子类创建对象时调用.
抽象类中可以拥有成员变量和常量
接口是一种特殊的抽象类, 也可以实现多态. 关键字: interface
接口没有构造方法
实现接口之后必须重写所有的抽象方法, 或者这个类必须是抽象类.
接口没有成员变量, 但是可以有常量(接口里的变量值不能修改)
即使你在接口里这么写: String name = "张三"
这么写, 它也默认是final
和static
修饰的 (可以截至使用类名点进行调用)
接口里不可以有普通方法
接口中的抽象方法可以省略public
和abstract
关键字
例如:
interface Inter {
// 以下这两种写法是一样的, 接口中可以省略public和abstract
// public abstract void show();
// void show();
}
接口中的方法重写时, 要有足够的权限, 如果接口里都是public
, 重写的时候权限必须要比public
要大, 或者为 public
才可以
JDK1.8之后(包括JDK1.8) 接口扩展 (不常用)
default
修饰的方法可以有方法体, 并且接口的实现类可以进行重写, 重写之后调用实现类的方法体, 否则调用接口中的方法体.static
修饰的方法根普通的静态类一样, 实现类不可以重写, 可以直接使用接口名点进行调用接口和接口之间是继承关系才可以关联
示例:
// 创建接口1
interface Mapper1 {
void save();
void get();
}
// 创建接口2
interface Mapper2 {
void add();
void update();
}
// 接口和接口之间是继承关系 (Mapper3 继承了 Mapper1 和 Mapper2中的方法)
interface Mapper3 extends Mapper1, Mapper2{
}
上例中: 如果一个实现类实现了Mapper3接口, 那么需要重写Mapper1, Mapper2, Mapper3中的所有抽象方法
实现类和接口使用implements
一个类可以实现多个接口, 例如:
class Impl2 implements Mapper1, Mapper2 {
// 重写 Mapper1 和 Mapper2 这两个接口的抽象方法都重写
}
实现类也可以继承一个类的同时实现多个接口. 必须是先继承父类再实现接口, 有先后顺序
标签:不同的 stat extends 使用 abs ring 否则 示例 特殊
原文地址:https://www.cnblogs.com/zpKang/p/12887722.html