java编程笔记6 面向对象一

2011-03-02 22:18

1,             类的定义 

[类修饰符] class  ClassName

{

       //类体的内容,成员变量成员方法 

}

注意:类修饰符只能是public或者无修饰符 

          若是public,类保存的文件名必须与类名一致(推荐总是保存的一直)

 

2,             成员变量和局部变量

1)       成员变量在整个类内部有效,局部变量只在定义它的方法内有效

2)       成员变量分类:

实例成员变量和类成员变量(static修饰)

3)       成员变量的隐藏,this关键字

当定义的局部变量和成员变量名字相同的时候,在局部变量的范围内要想使用成员变量得用this来引用

 

3,             成员方法

[accessType]  returnType name([parameter])

{

//方法体

}

accessType:修饰符,方法的访问权限,可省略

accessType:返回类型

parameter:参数

方法的重载:指一个类中有几个名字相同的方法,但他们的参数不同(类型或者个数),不能用返回类型来区分重载

 

4,             构造方法

构造方法用来创建对象,完成初始化。

1)     名字与类名称完全相同

2)     没有返回类型,void也没有

3)     可以有多个构造方法,也可以没有构造方法(有默认的)

 

5,             main方法

public static voidmain(String args[])

{

//…..

}

这里各项除了方法参数名args可以改变外,其他要一模一样。

一个java application的执行是从main方法开始的

参数String数组可以向应用程序传递参数,跟C差不多

Public classMainDemo

{

       public static void main(String args[])

{

              for(int i = 0;i <args.length;i++)

                     System.out.println(args[i]);

}

 

}

Java MainDemo 第一个参数 第二个参数 第三个参数

运行结果将分别输出这三个字符串。


6,             对象的创建,使用和清除

对象声明:

类名字  对象名字;

为对象分配内存:new

一般写在一起,如Circle circle1 = new Circle();

不同的对象都拥有各自的实例变量和实例方法,但共有类变量

 

对象的清除:java提供了垃圾自动回收机制

finalize()gc()

Object类的finalize()

protected  void

finalize()
          
当垃圾回收器确定不存在对该对象的更多引用时,由对象的垃圾回收器调用此方法。

 

Java垃圾回回收器的启用不是由程序员控制的,也无规律可循,并不一定产生了垃圾就被唤醒,因此这不是一个可靠地机制,我们无法保证每个对象的finalize()方法都将会被调用(finalize由系统调用)

System.gc()方法强制启动垃圾回收器来回收垃圾。

 

public static void gc()

调用 gc 方法暗示着 Java 虚拟机做了一些努力来回收未用对象,以便能够快速地重用这些对象当前占用的内存。当控制权从方法调用中返回时,虚拟机已经尽最大努力从所有丢弃的对象中回收了空间

匿名对象:

匿名对象是指生成对象时候没有指定对象的名字,使用匿名对象有以下两种情况:

1)     如果对一个对象只调用一次,就能使用匿名对象,如上例。

new  Person().cry();

2)     将匿名对象作为参数传递给一个函数

若有以下方法

public void getName(Person p)

{

        p.cry();

}

就可以这样来调用方法obj.getName(new Person());

 

7,             方法中参数的传递

按值传递

void method(int i,intj)

{

       i = i * 2;

       j =j * 2

}

int a;

int b;

当调用method(a,b)后,a,b的值不会变化。

 

按引用传递

方法的参数为一个对象,调用方法时通过对象对对象的成员变量操作,这样调用之后,这个对象的成员变量是会变的;

例子:

void method(MethodDemoobj)

{

       obj.a = 2 * obj.a;

       obj.b = 2 * obj.b;

posted @ 2011-03-15 12:58  jinmengzhe  阅读(255)  评论(0编辑  收藏  举报