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{
}与别的类结构关系
接口不能继承别的类 最抽象
抽象类--------直接多实现-------接口 可以
具体类--------直接多实现-------接口 不可以(不能直接将抽象方法具体化)
接口----------多继承-----------接口 可以直接多实现