1、对象的创建过程
对象在堆中,对象的引用在栈中,通过该引用的内存地址指向堆中的对象。
//1、创建对象
//stu1是一个局部变量。这个局部变量stu1是student类型,也就是一个引用类型。
//通过“引用”去间接访问堆中的对象
Student stu1 = new Student();
2、关于系统默认值
基本数据类型:
byte,short,int,long 0
float,double 0.0
boolean false
char \u0000
引用数据类型:null
3、this关键字
1)this是什么?
this是一个引用类型,在堆中的每一个java对象都有this,this保存内存地址指向自身。
2)this能用在哪些地方?
第一:this可以用在成员方法中
第二:this不能用在静态方法中
第三:this可以用在构造方法中(代码重用)
4、static关键字
1)static关键字介绍
static修饰的变量叫做“静态变量”
static修饰的方法叫做“静态方法”
static还可以定义静态语句块
2)static方法
一般情况下工具类中的方法大部分都是静态方法,静态方法不用创建对象也能直接访问该方法。
3)static变量
4)
4)什么时候声明static变量?
如果这个属性所有的对象都有,并且这个属性的值是相同的,则该属性声明成静态属性。
成员变量:创建java对象的时候进行初始化,
静态变量:在类加载阶段赋值,并且只赋值一次。
5)总结
类 {
//可以通过“类名.”,也可以通过“引用”. 底层也是“类名”
//1.静态变量
//2.静态方法
//必须对象存在才可以访问,采用“引用”
//3.成员变量
//4.成员方法
//创建对象,给成员变量赋值
5、构造方法
//类加载时只执行一次
6、静态语句块
//构造方法没调用之前执行一次
7、实例语句块
//用在成员方法和构造方法中
8、this
}
空指针异常:空引用访问成员
5、多态
作用:1、使用多态可以让代码之间的耦合度降低
2、项目的扩展能力增强
6、super关键字
1、super不是引用类型,super中存储的不是内存地址,super指向的不是父类对象
2、super代表的是当前子类对象中的父类型特征。
3、什么时候使用super?
子类和父类中都有某个数据,例如,子类和父类中都有name这个属性。
如果要在子类中访问父类中的name属性,需要使用super
4、super可以用在什么地方?
第一:super可以用在成员方法中,不能用在静态方法中。(可以调用父类的成员方法)
第二:super可以用在构造方法中。(用来子类构造方法的第一行,用来调用父类的构造方法,但不会生成父类对象)
7、抽象类
1、如何定义抽象类
class关键字前加abstract
2、抽象类无法被实例化
3、虽然抽象类没有办法实例化,但是抽象类也有构造方法,该构造方法时给子类创建对象用的
4、抽象类中可以定义抽象方法
5、抽象类中不一定有抽象方法,但抽象方法必须出现在抽象类中
6、一个非抽象的类继承抽象类,必须将抽象类中的抽象方法覆盖,实现重写。