类的加载顺序
存在继承关系的类 加载机制 及执行过程
加载类的过程—静态元素已经加载 new Person();
- 加载父类
- 父类会产生自己的静态空间 属性 方法 块
执行静态块 - 加载子类
- 子类会产生自己的静态空间 属性 方法 块
执行静态块 - 开辟对象空间
- 加载父类的非静态成员 属性 方法 块 构造方法
- 执行块 执行父类构造方法
- 加载子类的非静态成员 属性 方法 块 构造方法
- 执行块 执行子类构造方法
- 将对象空间的地址引用交给 变量来存储
native本地的
Java源代码中看到native就已经再也看不见后续代码,后续会调用其他的编程语言C++/C执行内存的操作,帮我们操作内存,Object类中一个方法:hashCode()
abstract抽象的
(很不具体 没有具体的执行 只是个概念)
1.可以修饰类中的那些成员?
修饰方法
用abstract修饰符修饰的方法 只有方法的结构 没有方法执行体叫做抽象方法
当然注意native修饰的方法虽然也没有方法体 但是不是抽象方法 只是执行的过程是其他语言写的 看不见修饰类
用abstract修饰符修饰的类 叫做抽象类
2.修饰后有什么特点
抽象类中必须有抽象方法么? 不是必须含有抽象方法
抽象方法必须放在抽象类中么? 目前来看必须放在抽象类中(或接口中) 普通类是不允许含有抽象方法
3.研究一下什么叫抽象类 抽象类有什么特点?(通常用来描述事物 还不是很具体)
- 类里面有什么 成员
属性 可以含有一般的属性 也可以含有 private static final等等
方法 可以含有一般的方法 也可以含有 private static final等等
注意:抽象类中是允许含有抽象方法(只有方法结构 没有方法执行体)
块 可以含有一般的程序块 也可以含有static程序块
构造方法 可以含有构造方法 包括重载- 类如何使用 创建对象
抽象类含有构造方法 但是我们不能通过调用构造方法直接创建对象
抽象类只能通过子类单继承来做事
为什么不让我们调用构造方法创建对象?为什么还有呢?- 类和类的关系
抽象类----直接单继承----抽象类 可以
抽象类----直接单继承----具体类 可以 (用法通常不会出现)
具体类----直接单继承----抽象类 不可以 (将父类的抽象方法具体化 或子类也变成抽象类)- 小问题
抽象类中能不能没有抽象方法 全部都是具体成员 可以
抽象类中能不能没有具体成员 全部都是抽象方法 可以 —> 抽象类抽象到极致 质的变化 —> 接口
*接口可以理解为是抽象类抽象到极致—>还是一个类的结构 不能用class修饰 改用interface修饰
接口(通常是为了定义规则)
接口也是一个类的结构 只不过 用interface修饰 替换原有的class
1.有什么 成员
属性 不能含有一般属性 只能含有公有的静态的常量 public static final
方法 不能含有一般方法 只能含有公有的抽象的方法(1.8 defualt修饰具体方法)
块 不能含有一般程序块 也不能含有static块(块本身就是具体的 接口中不让有具体的)
构造方法 不能含有构造方法2.如何使用 创建对象
不能创建对象
只能通过子类多实现(implements)来做事
public class A implements B,C,D{ … }3.与别的类结构关系
接口不能继承别的类 最抽象
抽象类----直接多实现----接口 可以
具体类----直接多实现----接口 不可以(必须将接口中的抽象方法具体化 自己变成抽象类)
*接口—多继承—接口 可以直接多实现
三连博主,每天分享一个编程小技巧!