面向对象的运行流程总结
1.程序要运行,需要先加载找到内存
2.JVM调用主方法,main方法压栈执行
3.逐行执行main方法中的代码
4.利用new xx()创建对象
new关键词做的事情:
在堆中为对象开辟空间,成员变量会跟随对象进入到堆内存并附默认值,会将对象地址返回给引用。
5.x1=new xx()中,x1指向xx()的堆中地址如0x00a——x1可以代表这个对象——可以通过使用x1使用这个对象【因为引用中储存了对象的地址】
6.程序向下运行,x1.color=“红色”,根据引用中存放的对象地址在堆中找到对象,修改对象内存空间中的属性值。
7.调用 方法(),方法压栈执行
只调用成员方法对象空间中的成员变量
8.方法执行完毕,弹栈释放内存。
9.主方法执行完毕,弹栈释放内存
成员变量与局部变量的区别
声明位置不同: 类中 方法中
作用范围不同: 当前类的方法 当前方法
构造器(构造方法|构造函数)
构造器是一个特殊的方法
作用:
为对象初始化信息,但是不是用来创建对象
继承 extends
为什么要去使用继承?
为了更好的利用代码的复用(提高代码的复用性)
如何开始用继承?
子类 extends 父类
父类|基类|超类:被继承的类
子类|派生类: 继承其他类的类
重写 和 重载之间的区别
都是方法的特性
方法的重载 : OverLoad
* 一个类中的多个方法
* 方法名相同
* 参数列表不同(方法签名:方法名+参数列表,是区分方法的唯一)
方法的重写: Override
* 不同的类
* 继承|实现
* 方法签名相同
封装
* 封装隐藏内部的实现细节,对外提供公共的访问方式
*
* 优点:
* 提高代码的安全性
* 提高代码的复用性(方法)
权限修饰符
权限修饰符 : 决定访问对象 中成员的一个限定范围(不同权限的英语角)
private 本类
* default 本类 同包类
* protected 本类 同包类 不同包子类
* public 全部
多态
多态 : 一种事物的多种形态|表现形式
注意: 使用检查语法时候只会看引用的类型|变量的类型,运行期间计算结果才会获取计算值
多态的前提: 类的继承|接口的实现
多态的最终体现: 父类引用指向子类对象
多态的调用: 父类的引用调用方法的时候,会调用子类重写的方法
abstract关键字 抽象的
* 抽象类 :abstract修饰的类就是抽象类
* 抽象方法: abstract修饰的方法就是抽象 方法
* 没有方法体
* 必须定义在抽象类中
接口
* class 类 extends 继承
* interface 接口 implements 实现
* 特殊的抽象类
* 是功能的集合(一般指抽象方法)