Java初级篇—类的加载顺序、抽象类、接口

本文详细讲解了Java中类的加载顺序,包括静态元素加载和对象创建过程。同时,介绍了抽象类和接口的概念,包括它们的修饰、特点、使用方式以及相互关系。重点阐述了抽象类与接口的区别,帮助理解Java中类的设计和实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

类的加载顺序

存在继承关系的类 加载机制 及执行过程
加载类的过程—静态元素已经加载 new Person();

  1. 加载父类
  2. 父类会产生自己的静态空间 属性 方法 块
    执行静态块
  3. 加载子类
  4. 子类会产生自己的静态空间 属性 方法 块
    执行静态块
  5. 开辟对象空间
  6. 加载父类的非静态成员 属性 方法 块 构造方法
  7. 执行块 执行父类构造方法
  8. 加载子类的非静态成员 属性 方法 块 构造方法
  9. 执行块 执行子类构造方法
  10. 将对象空间的地址引用交给 变量来存储
    类的加载顺序
类的加载顺序

native本地的

Java源代码中看到native就已经再也看不见后续代码,后续会调用其他的编程语言C++/C执行内存的操作,帮我们操作内存,Object类中一个方法:hashCode()

abstract抽象的

(很不具体 没有具体的执行 只是个概念)

1.可以修饰类中的那些成员?

修饰方法
用abstract修饰符修饰的方法 只有方法的结构 没有方法执行体叫做抽象方法
当然注意native修饰的方法虽然也没有方法体 但是不是抽象方法 只是执行的过程是其他语言写的 看不见

修饰类
用abstract修饰符修饰的类 叫做抽象类

2.修饰后有什么特点
抽象类中必须有抽象方法么? 不是必须含有抽象方法
抽象方法必须放在抽象类中么? 目前来看必须放在抽象类中(或接口中) 普通类是不允许含有抽象方法

3.研究一下什么叫抽象类 抽象类有什么特点?(通常用来描述事物 还不是很具体)

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

接口(通常是为了定义规则)

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

1.有什么 成员

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

2.如何使用 创建对象

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

3.与别的类结构关系

接口不能继承别的类 最抽象
抽象类----直接多实现----接口 可以
具体类----直接多实现----接口 不可以(必须将接口中的抽象方法具体化 自己变成抽象类)
*接口—多继承—接口 可以直接多实现

接口、抽象类、具体类通常的关系体现

接口 抽象类 具体类通常的关系体现


阅读更多

三连博主,每天分享一个编程小技巧!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值