被子类重写,而 private 修饰的方法是私有的,不被子类所知,无法重写。
static:static 修饰的方法可以直接使用类名调用,不需要使用对象调用,如果 static 使用在抽象方法上就没有运行的意义了。
final:final 修饰的类不能有子类,而 abstract 修饰的类一定是一个父类。
例如:
三、接口
1. 概述
- 当抽象类中所有的方法都是抽象方法时,该类可以通过接口的形式表示,使用 interface 来表示,子类中使用 implements 来实现,接口可以认为是特殊的抽象类。
- 格式:
- interface 接口名{}
- 子类名 implements 接口名 {}
- 特点:
- 接口中常见定义:常量、抽象方法。
- 接口中成员都是使用 public 修饰的。
- 接口中成员都有固定的修饰符:
- 常量:public static final
- 方法:public abstract
- 注:接口中的常量可以不写 public static final,方法可以不写 public abstract,编译时会自动添加这些修饰符,这是 Java 中接口固定的修饰符,为了方便阅读,一般都会写上。
2. 特点
- 接口是程序功能的扩展。
- 接口是对外暴露的规则。
- 接口的出现降低了耦合性。
- 接口可以用来多实现,对于 Java 不支持多继承的缺陷而做的转换,Java 支持多实现。
- 类与接口之间是实现关系,类只能继承一个类,但同时可以实现多个接口。
接口与接口之间可以有继承关系,而且接口与接口之间支持多继承。 注:
1. 接口不可以创建对象,因为接口有抽象方法需要子类实现(implements),子类需要全部重写接口中的抽象方法后,子类才能实例化,否则该子类也会是抽象类。
2. 实现多个接口时,接口中不允许有返回类型不同的同名抽象函数,如果有这样的情况时,子类实现将无法重写接口的抽象方法。
3. 接口与抽象类
- 相同点:都是不断向上抽取出来的抽象概念。
- 区别:
-
- 接口是实现,是 "like a" 关系;
- 抽象类是继承,是 "is a" 关系。
-
- 接口中的常量和方法都是 public 修饰的权限;
- 抽象类中可以有私有变量或方法。
-
- 接口体现的是实现关系,可以多实现,接口与接口之间可以有继承关系;
- 抽象类体现的是继承关系,只能单继承。
-
- 接口中所有方法都是抽象方法,接口中的成员都是有固定的修饰符;
- 抽象类中可以定义非抽象方法,提供给子类直接使用。
例如:
|