native与abstract
本次详细介绍 native 与 abstract 关键词 及 问与答
native本地的
Java源代码中看到native就已经再也看不见后续代码
后续会调用其他的编程语言C++ C执行内存操作 帮我们操作内存
如:Object类中一个方法 hashCode
abstract抽象的-----(很不具体 没有具体的执行 只是个概念)
1.可以修饰什么
①修饰方法
用abstract修饰符修饰的方法 只有方法的结构 没有方法执行体叫做抽象方法
当然注意native修饰的方法虽然也没有方法体 但是不是抽象方法 只是执行的过程是其他语言写的 看不见
②修饰类
用abstract修饰的类 叫做抽象类
2.修饰后有什么特点
抽象类中必须有抽象方法么?不是必须含有抽象方法
抽象方法必须放在抽象类中么?放在抽象类中或接口
3.研究一下什么叫抽象类 抽象类有什么特点?(通常用来描述事物 不具体)
属性 可以含有一般属性 也可以含有 private static final 等等
方法 可以含有一般方法 也可以含有 private static final 等等
注意:抽象类中是允许含有抽象方法(只有方法结构 没有方法执行体)
块 可以含有一般的程序块 也可以含有static程序块
构造方法 可以含有构造方法 包括重载
2.类如何使用 创建对象
抽象类含有构造方法 但是我们不能通过过调用构造方法直接创造对象
抽象类只能通过子类单继承来做事
为什么不让我们调用构造方法创建对象?为什么还有呢?
3.类和类的关系
抽象类---直接单继承---抽象类 可以
抽象类---直接单继承---具体类 可以(通常不会出现)
具体类----直接单继承----抽象类 不可以
4.小问题
抽象类中能不能没有抽象方法 全部都是具体成员 可以
抽象类中能不能没有具体成员 全部都是抽象方法 可以----》抽象类抽象到极致 质的变化----》接口
接口可以理解为是抽象类抽象到极致---》还是一个类 不能用class修饰 改用interface修饰
5.什么是接口(通常是为了定义规则)
接口也是一个类的结构 只不过 用interface修饰 替换原有的class
①有什么 成员
属性 不能含有一般属性 只能含有共有的静态常量 public static final
方法 不能含有一般属方法 只能含有共有的抽象方法(1.8 defualt修饰具体方法)
块 不能含有一般程序块 也不能含有static(块本身就是具体的 接口中不让有具体的)
构造方法 不能含有构造方法
②如何使用 创建对象
不能创建对象
只能通过子类多实现(implements)来做事
public class A implements B,C,D{}
③与别的类结构关系
接口不能继承别的类 最抽象
抽象类-----直接多实现---接口 可以
具体类------直接多实现----接口 不可以(必须将接口中的抽象方法具体化 自己变成抽象类)
*接口----多继承---接口 可以直接多实现