我们知道在面向对象的程序设计语音中有两个很重要的概念,就是类和对象,其中类是某一批对象的抽象,我们可以
把类理解成某种概念,那对象就是一个具体存在的实体。
在接下来讲解的Java语言就是一门面向对象的程序设计语言,其中类和对象是核心。
在Java中创建类主要如下格式:
<span style="font-size:18px;">public class Teacher { }</span>
以上是个空类,一般定义一个类时,类中最常见成员就是:构造器、Field和方法,其中用static修饰的成员不能访问
没有用static修饰的成员;构造器用于构造该类的实例,通过new关键字来调用构造器,并返回该类的实例,如果没有
定义构造器,那么系统会为该类提供一个默认的构造器,相反,如果已经定义了构造器的话,系统就不会再为该类提
供构造器了。
接着我们看下完整的定义一个类:
<span style="font-size:18px;">public class Teacher { private int age=30; public Teacher(){ } public void printAge(){ System.out.println(age); } }</span>
除了可以使用public来修饰之外,也可以省略修饰符,也可以使用如下修饰符来修饰:private、protected、static、
final ,其中public、protected、private 三个最多只能用其中的一个,可以和static 、final 组合起来修饰Field。
以上Field类型为int,也可以是Java语音允许的任何数据类型,包括基本类型和引用类型。这里定义了int类型,整型,
初始值为30。
上面也定义了一个方法printAge(),方法的修饰符为private,也可以省略,还可以使用public、protected、static、
final、abstract,其中public、protected、private三个最多只能有一个;abstract和final最多也只能使用一个,可以和
static组合起来修饰方法。
以上方法printAge返回值类型是void,也就是没有返回值。返回值类型可以是Java语音允许的任何数据类型,包括基
本类型和引用类型,如果声明了方法返回值类型,那么方法体内必须有个一有效的return语句。
Teacher类的构造器的语法格式也是由修饰符修饰,可以省略,也可以使用public、protected、private其中之一。构
造器的名字必须与类名完全相同,值得注意的是构造器并没有定义返回值类型。如果定义了返回值类型的话,那它就
是一个方法,并不是构造器。
接下来通过new关键字来创建这个类的实例:
<span style="font-size:18px;">public class Main { public static void main(String[] args) { Teacher teacher=new Teacher(); teacher.printAge(); } }</span>通过newi关键字创建了一个实例teacher,并调用了类定义的方法printAge()。
在以上代码中我们是通过Teacher teacher=new Teacher();来创建类的实例的,这行代码中产生了两个值,一个是变
量teacher,一个是Teacher对象。
如下图:
堆内存
当我们创建Teacher对象时,需要有对应的内存来存储Teacher对象的Field。以上使用类来定义的变量就是引用变
量,也就是所有类是引用类型。从上图我们并没有看到引用变量,其实引用变量被存放在栈内存中,用来指向实际的
Teacher对象。如下图所示:
栈内存 堆内存
栈内存中引用变量teacher并不是真正用来存储对象的Field数据,对象的Field数据实际放在堆内存中,引用变量只是
指向该堆内存中的对象。
根据上面的内容我们知道,当一个对象呗创建成功后,这个对象保存在堆内存中,Java程序不允许直接访问堆内存中
对象,因此就有了引用变量,通过该对象的引用来操作对象。
在推内存中的对象可以有多个引用,也就是引用变量指向同一个对象。
Java还提供了this关键字,用来指向调用该方法的对象。根据this所在的位置的不同,this作为对象的默认引用有两中
情形:
1、构造器中引用该构造器正在初始化的对象
2、在方法中引用调用该方法的对象
值得注意的是,static修饰的方法中不能使用this引用,也就是static修饰的方法不能访问不使用static修饰的普通成
员,因此Java语法规定:静态成员不能直接访问非静态成员。
转载请注明出处:http://blog.csdn.net/hai_qing_xu_kong/article/details/42651911
情绪控_
原文地址:http://blog.csdn.net/hai_qing_xu_kong/article/details/43852289