【Java】类与对象总结

来源:互联网 发布:模拟器登不上淘宝 编辑:程序博客网 时间:2024/06/06 01:41
概述:对象在程序中是通过一种抽象数据类型来描述的,这种抽象数据类型称为类;类表示一个有共同特征的对象集合,对象是一个具体的概念,是类的一个具体的实例。类中包含静态属性和动态特征,作为一种复合数据类型,可以在程序中进行类的定义,类定义完成后,通过类来定义类的对象,通过构造方法为对象进行初始化,然后通过调用对象的方法来实现程序需要的功能。

一、对象的初始化:
(1)声明对象:通知编译器利用指定标识对指定类型的变量进行引用,没有为对象在内存中分配相应的地址空间
用类名定义对象,类表示对象的类型;

例如:Circle defCircle;

(2)实例化对象:为对象向系统申请内存,同时调用类的构造方法为对象进行初始化,类中可以定义多个重载的构造方法。(这里重载就是说名字相同,但是参数不同的方法)

二、构造方法
作用:如果没有构造方法,那么每创建一个实例对象,都要写程序初始化对象的所有变量;有了构造方法,一个对象在创建的同时。就完成了所有的初始化工作。一句话总结就是:在创建类的对象的同时,初始化类的实例对象。

特点:
1.方法名和类名相同;
2.没有返回值,方法头定义不需要返回类型修饰符;
3.用户不能直接调用构造方法;
4.构造方法在用户创建对象的时候,由系统自动调用执行;
5.构造方法的作用是对对象进行初始化;
6.修饰符只能是访问控制修饰符(private、public、protected),不能是abstract、static、final等;
7.当没有定义构造方法的时候,系统会自动为该类缺省定义一个空构造方法,即为变量自动赋初值。对象的初值为“null”。

三、静态属性的定义
(1)修饰符:public、protected、private、final、static、transient(变量为临时变量)、volatile(多线程程序中,用来说明备份变量)的一个或多个组合(例如public final…);
(2)静态域static(类变量)
静态域属于整个类的成员变量,它存储在类的内存区域的公共存储单元(数据区)中,该类的对象访问的都是同一块区,获取的是同一个值,如果一个对象修改了,那变化会应用到所有对象中;

内存中的五大区域
—局部变量,当局部变量的作用域,被执行完毕之后,局部变量就会被系统立即回收
—程序员手动申请的字节空间,Malloc calloc realloc
BBS段—-未被初始化的全局变量和静态变量 一般初始化就回收,并转存到数据段中
数据段(常量区)–已经被初始化的全局静态变量常量数据,程序结束的时候才会被回收
代码段—-存储代码,存储程序的代码

(3)静态初始化器
Q:静态属性位于公共数据区,属于整个类的属性,如何进行初始化?
A:静态初始化器。
Q:静态初始化的时机?
A:当所属类被加载到内存时进行。

特点:
1.静态初始化器是对类自身进行初始化,构造方法是对对象进行初始化;
2.静态初始化器是在类加载进内存时由系统自动调用执行的,而构造方法是在使用关键字new创建对象时,由系统自动执行的,new后面是构造方法。

实际上,new一个对象可以分成两步:
1.使类加载进内存:Class t = class.forName(“类名”);
【执行这一步的时候,会产生异常,因为涉及到文件读写(与外部交互的过程)】
2.启动静态初始化器:Circle c = (类名)t.newInstance()

(4)静态方法:
a.静态方法属于整个类,在内存中分配公共的内存空间;而非静态方法属于某个对象的方法,只有在对象创建的时候才为该对象的方法分配内存空间;
b.静态方法又称为类方法,它不能直接操纵和处理类的非静态域,只能处理属于整个域的成员变量,也就是静态域;
c.调用静态方法时,可以不用创建对象,直接用类名作为方法名的前缀

(5)最终域final

final放在类的声明中,说明该类无法给子类继承,放在方法中,说明该类的子类无法覆盖父类的方法,即无法实现多态。

四、参数传递方式:
根据参数的数据类型自动决定:
(1)赋值调用传递
参数为:整型、实型、字符型、布尔型;
(2)引用传递
参数为:类或者数组类型;

五、方法的重载:
是指在同一个类中,定义了方法名称相同但方法参数不同的多个方法,用来实现多个不同的功能要求。只能通过参数表来区分重载的方法,不能通过返回值类型来区分。

六、this关键字
当其他变量已经在另一个方法中被初始化,在当前方法中要调用该变量时,可以简写成this,而且要写在最前面。