目录
1.类与对象
2.类的组成
类的成员变量
类的成员方法
3.创建一个类
4.类加载(目前所了解的)
加载包括(被动、主动)
一个类中的加载顺序
5.创建对象
6.构造器
方法的重载(overload):
1.类与对象
万物皆对象
类的定义 类:是构造对象的模板、蓝图,类是一组相关属性和方法的集合,类是一个抽象的概念,是人为定义的不具有现实意义的事物 根据数据类型划分,类是一个引用数据类型
对象的定义
对象:对象是类的具体化实现,是在现实世界真实存在的事物,拥有类的所有属性和方法
理解:
在一般生活中往往是先有了许许多多的对象,才会人为的定义一个类别,将他们囊括在这个类中,用来更好的描述这些对象;而在java面向对象的语言中,是先定义一个类,然后再创建许许多多的对象。 类就是许多对象所拥有的共同特点的集合,对象则是他的具体体现 例如: 汽车就是一个类,汽车有一些属性和方法(行为),汽车的对象就是跑车、吉普车、越野车等一些列对象,这些对象也有汽车的属性和方法
2.类的组成
| 组成 |
|---|
| 1.属性:就是事物的特征(比如手机的颜色、材料等) |
| 2.行为(方法):就是事物能够做什么(比如手机可以打电话、发短信等) |
类中还可以有其他部分,例如:代码块
static{
内容
}
静态代码块,随着类的加载而加载,不随对象而存在,因为类只需要在方法区加载一次,所以这个静态代码块也只需要被调用一次
{
内容
}
非静态代码块,随着对象的创建而加载,每创建一次都需要被调用
类的成员变量
成员变量:
可以是引用类型也可以是基本数据类型
[访问修饰符][修饰符]变量名;
访问修饰符:public protected 默认 void
修饰符 static
类的成员变量可以在定义时就直接赋值 [][]变量名=数值;
如果没有主动定义或者使用有参的构造器初始化,那么默认的构造器就会自动给成员变量赋值:: int 0,short 0, byte 0, long 0, float 0.0,double 0.0,char 空格,boolean false,String null
如何访问成员变量:
1.是非静态的成员变量,通过对象名来访问,即对象名.成员变量;
2.是静态的成员变量,既可以通过变量名访问,也可以通过类名直接访问 类名.成员变量;
类的成员方法
方法进入栈区叫做压栈,作用顺序是先进后出,后进先出,当一个类方法使用完毕时,会将返回值返回给调用他的地方,然后这个方法会弹出栈区 ,当main方法执行完毕时,整个程序退出
成员方法的定义:
[访问修饰符][修饰符]返回值类型 方法名(小驼峰)(形参列表...){
方法体;
return 返回值;//若是构造器时,省略return 语句 若是void类型则可以省略return 返回值 或者 直接写return (直接结束方法)
}
注意:
一个方法如果有返回值,则最多只能有一个返回值
返回值可以是基本数据类型,也可以是引用数据类型
return 返回值 返回值类型必须要和定义的类型一致或兼容(可以自动转换)
方法里面不能再定义方法,不允许方法的嵌套
方法的调用
3.创建一个类
通过class关键字创建一个类,创建类的基本形式:
一般类:[访问修饰符]class 类名 在.java文件中只能允许存在一个public修饰的类 内部类:[访问修饰符][修饰符]class 类名
4.类加载(目前所了解的)
JVM虚拟机中有栈、堆和方法区
堆:储存的是引用类型数据、局部变量
栈:储存的是成员变量,对象
方法区:有一个专门存放类加载的区域、static的区域
加载包括(被动、主动)
被动加载:
主动加载:
· new 关键字:在栈区创建引用类型变量、堆区存放真正的对象 · 访问类的静态成员,这个静态成员没有被final修饰(static final修饰的成员直接存放在不用调用类,且必须要主动赋初值) · 继承时,会主动类加载父类的所有信息,将父类加载到方法区 · Java虚拟机启动的时候被标记为启动类的类,即包含Main方法的类
一个类中的加载顺序
1.首先加载属于类的static修饰的部分(调运被static final修饰的部分时,可以用类直接调用,但是不需要加载类),static修饰的部分存放在方法区,会自动赋初值
2.之后加载属于对象的非静态部分
注意:
静态成员只会随类的加载而被初始化一次,且只有一个
非静态成员会随对象的创建而不断被初始化,有几个对象就会被初始化几次
静态方法只能使用静态成员
非静态方法既可以使用静态成员也可以使用非静态成员
5.创建对象
通过new关键创建一个类的对象
例如 :有一个Student类,创建一个xiaoMing这个类的对象 Student xiaoMing = new Student();(0x110) 赋值号右边的才是一个真正的对象,储存在堆区 赋值号左边的只是一个Student的变量,变量名是xiaoMing,储存在栈区 实质:是将堆区的对象的地址(0x110)赋值给了xiaoMing这个变量,由xiaoMing这个变量指向堆区的这个真正的对象
6.构造器
构造器的定义: 构造器名和类名相同、构造器没有返回值、在创建对象时,系统自动调用构造器,如果没有显性的定义构造器那么系统会自动有一个默认的无参构造器,如果定义了自己的构造器,那么默认构造器就会被覆盖,除非再次显性展现
涉及对象的初始化
例如上例:
例如 :有一个Student类,创建一个xiaoMing这个类的对象 Student xiaoMing = new Student();(0x110) 右边的这个才是真正的对象 而 Student()就是一个无参构造器,给对象的成员初始化
构造器可以有无参的也可以是有参的,所以在一个类中可以有许多参数不同(参数的类型、参数的顺序、参数的长度)的构造器,用来初始化对象的成员变量,这个就是方法的重载,构造器是一个特殊的方法
方法的重载(overload):
在一个类中可以有方法名相同但是参数列表不同的许多方法:
参数列表的不同:
1.参数的类型不同
2.参数的类型数据不同
3.参数的长度不同
目的:在一个类中可能有方法作用相同但是作用的参数不同的情况,方法的重载就可以完美的解决这个问题
例如:
public int max(int a,int b){
return a>b?a:b;
}
public double max(double,double b){
return a>b?a:b;
}
都是返回两数中的最大值,但是一个是比较的是int类型,一个是比较的double类型,用了方法的重载,输入相应的参数列表,程序运行时,会自动选择相应的方法



