# 2021-12-16
5、抽象类和接口
(1) 抽象类
使用abstract。
- 抽象类中可以写普通方法。
- 抽象方法必须在抽象类中。
- 不能实例化(new)抽象类,只能依靠子类去实现。
一个类只能继承一个抽象类,而一个类却可以实现多个接口。
抽象方法:
Abstract 关键字同样可以用来声明抽象方法,抽象方法只包含一个方法名,而没有方法体。
抽象方法没有定义,方法名后面直接跟一个分号,而不是花括号。
声明抽象方法会造成以下两个结果:
- 如果一个类包含抽象方法,那么该类必须是抽象类。
- 任何子类必须重写父类的抽象方法,或者声明自身为抽象类。
继承抽象方法的子类必须重写该方法。否则,该子类也必须声明为抽象类。最终,必须有子类实现该抽象方法,否则,从最初的父类到最终的子类都不能用来实例化对象。
转载:菜鸟教程,参考抽象类和接口:https://www.runoob.com/w3cnote/java-abstract-interface-different.html
(2) 接口
一个类通过继承接口的方式,从而来继承接口的抽象方法。
接口可以多继承
使用关键字 interface 定义接口,使用 implements 实现接口。
接口中的变量会被隐式地指定为 public static final 变量(并且只能是 public static final变量,用 private 修饰会报编译错误),而方法都是抽象的,会被隐式地指定为 public abstract 方法且只能是 public abstract 方法。
6、内部类
Java 一个类中嵌套另外一个类,语法格式如下:
class OuterClass { // 外部类 // ... class NestedClass { // 嵌套类,或称为内部类 // ... } }