4.类和对象
4.1 类是什么?
通过java语言描述一组性质或特征相同或相似事物的自己定义的复合数据类型。
4.2 类是如何编写的?
通过class关键字来创建一个类,具体格式如下:
访问限制修饰符 class 类名{
}
4.3 类中可以编写什么?
在类中可以编写变量和方法
4.4 类中的变量的分类以及特征?成员变量的隐藏?静态成员变量与实例变量的区别?
类中的变量可以分为全局变量和局部变量,全局变量可以被类中的任意一个方法调用,局部变量只能在定义该局部变量的方法中使用;全局变量可以没有初始值,系统会自动赋予默认初始值,而局部变量一定要有初始值;全局变量需要访问限制修饰符,局部变量不能有访问限制修饰符
成员变量隐藏
类中的某一个成员变量的名称与某一个方法中的局部变量的名称相同,那么类中的成员变量的数据值被局部变量覆盖隐藏。
静态成员变量与实例变量的区别
有static关键字修饰的成员变量-----静态成员变量【类变量】,没有static关键字修饰的成员变量-----实例成员变量【实例变量】;类变量可以使用对象调用,也可以使用类名调用, 实例变量只能通过对象调用;类变量是在程序运行之前分配内存空间,实例变量是在程序运行时分配内存空间;类变量会在同类型的对象中共享,实例变量是不会在同类型的对象中共享
4.5 类中的方法以及表现形式和特征?方法的重载?
类中的方法分为三种,实例方法、类方法和构造方法。
实例方法格式:
访问限制修饰符 返回值类型 方法名(方法参数列表){
方法体
}
类方法格式:
访问限制修饰符 static 返回值类型 方法名(方法参数列表){
方法体
}
构造方法格式:
访问限制修饰符 类名称(方法参数列表){
方法体
}
构造方法是用来创建对象的方法,没有返回值类型,方法名称必须与类名称相同
当我们创建好一个类以后,默认就有一个无参数的构造方法存在,只是没有显示出来。当类中出现有参数的构造方法时,我们最好将无参数的构造方法,手动显示出来,如果没有手动显示出无参数的构造方法,那么有参数的构造方法会将原本默认存在的无参数的构造方法覆盖。
方法重载
在同一个类中,方法名称相同,参数不同(参数类型不同、个数不同)这种现象就是方法重载。
方法重载与返回值类型没有关系
4.6 同一个类中方法与变量的调用关系?方法与方法的调用关系?
A. 同一个类中方法调用变量
构造方法:可调用实例变量,默认是this.实例变量,this.可以省略
可调用类变量,默认是类名.类变量,类名.可以省略,也可以是this.类变量,this.可以省略
实例方法:可调用实例变量,默认是this.实例变量,this.可以省略
可调用类变量,默认是类名.类变量,类名.可以省略,也可以是this.类变量,this.可以省略
静态方法:不可以调用实例变量
类方法可以调用类变量,默认是类名.类变量,类名.可以省略
静态方法中不能出现this
B. 同一个类中方法调用方法
构造方法:可以调用其他的构造方法,new + 其他的构造方法
可以调用实例方法,默认this.实例方法,this.可以省略
可调用类方法,默认类名.类方法,类名.可以省略,也可以是this.类方法,this.可以省略
实例方法:可以调用其他的构造方法,new + 其他的构造方法
可以调用实例方法,默认this.实例方法,this.可以省略
可调用类方法,默认类名.类方法,类名.可以省略,也可以是this.类方法,this.可以省略
静态方法:可以调用其他的构造方法,new + 其他的构造方法
不可以调用实例方法
可以调用类方法,默认类名.类方法,类名.可以省略
静态方法中不能出现this
4.7 对象是什么?如何创建?作用是什么?
对象就是类创建出来的实例,创建对象的过程就是类的实例化。
创建对象格式: 类名 对象名称 = new 构造方法;
对象作用:可以通过对象调用定义在类中的变量和方法
4.8 对象的内存分配原理?
对象通过类创建,所以对象的内存分配机制与复合数据类型相同,堆区栈区都会有分配。创建对象时(new),相当于在堆区开辟一块内存空间,栈区保存的是该对象在堆区开辟内存空间的地址,方便调用该对象
4.9 对象的使用?
要使用对象,首先要做的就是创建对象(new)。若需要使用类中定义的变量,可以直接使用对象名称.变量名进行操作;在通过对象使用类中定义的方法时,看方法的返回值类型与参数,如果有参数,就在调用方法的时候传参数;如果该方法有返回值,就将调用方法后的返回值创建与之相对应的数据类型的变量去接收。
总结:1.先new 2,要什么,给什么 3. 给什么,收什么
4.10 类与对象的关系?
类是创建对象的依据,对象是通过类创建出来的实体。没有类就没有对象,没有对象类也就没有意义