JavaSE基础 (十五)

abstract 抽象类

不具体 没有执行过程 只是一个概念

可以修饰什么

修饰方法
用abstract修饰符修饰的方法 只有方法的构造  没有方法执行体叫抽象方法
当然注意native修饰的方法虽然没有方法体 但是不是抽象方法 只是执行的过程是其他语言写的 不属于抽象类
用abstract修饰符修饰的类 叫抽象类

修饰后有什么特点

抽象类中必须要有抽象方法吗? 不是必须含有抽象方法
抽象方法必须放在抽象类中? 目前来看必须要放在抽象类中(或接口中)普通类是不许有抽象方法

研究一下什么叫抽象类 抽象类有什么特点?

1.类里面有什么 成员
          属性    可以含有一般的属性  也可以含有 private static final 等
          方法    可以含有一般方法    也可以含有 private static final 等 
                  注意:抽象类中允许含有抽象方法(只有方法结构 没有方法执行体)
          块      可以含有一般程序块  也可以含有static程序块
          构造方法  可以含有一般方法,包括重载
2.类如何使用  创建对象
          抽象类含有构造方法 但我们不能通过调用构造方法创建对象
          抽象类只能通过子类单继承来做事
3.类和类的关系
          抽象类-----直接单继承---抽象类   可以
          抽象类-----直接单继承---具体类   可以
          具体类-----直接单继承---抽象类   不可以()
4.小问题
抽象类中能不能没有抽象方法 全都是具体成员  可以
抽象类能不能没有具体成员 全都是抽象方法 可以 ---->抽象到极致--->接口
接口可以理解为是抽象类抽象到极致------->还是一个类的结构 不能用class修饰 改用interface修饰

interface 接口

什么是接口?

接口也是一个类的结构 只不过用interface修饰 替换原有的class

有什么 成员

属性            不能含有一般属性 只能含有公有的静态常量 public static final
方法            不能含有一般的方法 只能含有公有的抽象方法(1.8以后default修饰具体方法)
块              不能含有一般程序块 也不能含有static块(块本身就是具体的 接口中不让有具体的)
构造方法        不能含有构造方法

如何使用 创建对象

不能创建对象
只能通过子类多实现(implements)来做事
public class A implements B,C,D{

}

与别的类结构关系

接口不能继承别的类   最抽象
抽象类--------直接多实现-------接口  可以
具体类--------直接多实现-------接口  不可以(不能直接将抽象方法具体化)
接口----------多继承-----------接口  可以直接多实现