markdown
### abstract
```text
随着继承层次中一个个新子类的定义,类变得越来越具体,而父类则更一般,更通用,类
的设计应该保证父类和子类能够共享特征,有时将一个父类设计的非常抽象以至于它没有
具体的实例,这样的类叫做抽象类
```
*
*可以用来修饰类/方法*
* #### (一)抽象类 ```text abstract class Person{} * Person类无法实例化 * 抽象类中一定有构造器,便于子类实例化 * 程序中都会提供抽象类的子类,便于调用 ``` ```text #抽象类的匿名子类 Person person = new Person(){ 重写方法 }; ``` #### (二)抽象方法 ```text public abstract getName(); * 包含抽象方法的类,一定是抽象类 * 只有方法的声明,没有方法体 * 子类要实现该方法/子类也是抽象类 ``` **类比于c++头文件,有相似之处*
* ### interface #### (一)定义 ```text interface Person{} 用于实现某个子类的多重继承 可以定义全局常量,抽象方法. * 全局变量 默认修饰符为 public static final * 抽象方法 默认修饰符为 public abstract 接口中不能定义构造器,因此无法实例化 ``` JDK8之后,还可以定义静态方法,默认方法 ```text #静态方法: 只能由接口调用 public static void func() #默认方法: 通过实现子类对象来调用 public default void func() ``` #### (二)实现 ##### * 实现单个接口 ```text #子类要实现该接口/子类也是抽象类 class Student implements Person{ 需要重写 } abstract class Student implements Person{ 不需要重写 } ``` ##### * 实现多个接口 ```text class Student implements Person,Human{} class Student extends Object implements Person,Human{} ``` ### 内部类 ```text #简单来说就是将一个类声明在另一类内部 当一个事务的内部,还有一个部分需要一个完整的结构进行描述,而这个 内部的完整结构又只为外部事务提供服务,那么整个内部的完整结构 最好使用内部类 ``` ```text 按照声明位置分为: 成员内部类/局部内部类 ``` **[返回教程主页](https://www.monody.net/p/blog-page_3.html)*
*
评论