JAVA_面向对象2

Posted fuck两点水

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JAVA_面向对象2相关的知识,希望对你有一定的参考价值。


一.JAVA类的定义


       JAVA里面有class关键字定义一个类,后面加上自定义的类名即可。如这里定义的person类,使用class person定义了一个person类,然后在person这个类的类体里面定义person这个类应该具有的成员变量(即属性)和方法,如这里定义的int  id和int  age这个两个成员变量,或者叫属性,这个id表示人的身份证号码,人应该具有这个属性,age表示人的年龄,这也是人应该具有的。这样就在person这个类里面定义了两个人应该有的属性,接下来就是定义方法了,这里定义了三个方法,分别是getAge()、setAge(int  i)和getId(),分别用来获取人的年龄,设置人的年龄,获取人的id,getAge()方法获取了人的年龄后,将获取到的值返回,所以使用了return  age语句,getId()方法也使用了return  id语句用于返回获取到的id的值。
       之前也说过,类是一个对象的抽象,简单的说,类就是一种对象的概括,一个大类!就好像这里定义的person类,是人特征的一个概括,你可以根据这个的类的方法属性去new一个具体特征的人,而这个人就是对象!
二. 成员变量


  

           在JAVA里面的任何变量首先应该要声明,然后再赋值,然后再使用。成员变量和局部变量有一个重要区别:成员变量在类里面声明时如果不进行初始化,那么JAVA会默认给它初始化,而局部变量JAVA不会默认给它初始化,所以在方法里面声明一个局部变量如果不给它初始化时就会出错。默认初始化大多数都是0,boolean类型的为false,引用类型的为null,如过不记得JAVA对成员变量默认的初始化是多少的话,那就这样做,定义一个成员变量,不给它初始化,然后直接打印这个成员变量,打印出来的结果就是JAVA默认的初始化的值。
       这里就有个问题了!为什么成员变量在声明的时候不进行初始化,JAVA会默认给他初始化,而局部变量不会呢?而且为什么局部变量不给它初始化就会报错呢?
       首先从设计者的角度出发,当我们新建一个对象时,Java会在Heap中申请一块内存区域用以存放类的数据。而成员变量就是类的数据,也是放在这块内存区域中的。只需要JVM在申请内存的时候顺便把整块区域都置为零即可完成初始化,方便快捷。而对于方法的局部变量,是在线程的Stack中,当然Stack他也可以帮我们初始化,不过有一个问题。对于有些局部变量,在方法的一开始是没有的,有些在循环中的局部变量是要反复的声明多次的。有些局部变量作用域结束后,另一个局部变量又会占用这个局部变量的位置。那么初始化要放在何时呢?当然JVM可以帮我们初始化多次,不过那样或许会带来性能问题,开销大!
三、Java面向对象的基本概念——引用