您的位置:首页 > 职场人生

第五篇 黑马程序员-函数、类与对象

2012-08-21 08:56 232 查看
------- android培训java培训、期待与您交流! ---------

一.

如何定义一个函数呢?

1.既然函数是一个独立的功能,那么该功能的运算结果是什么先明确

因为这是在明确函数的返回值类型

2.再明确在定义该功能的过程中是否需要未知的内容参与运算

因为是在明确函数的参数列表(参数的类型和参数的个数)

小结:

方法返回值为void的时候不要写输出语句,直接调用就可以了。

方法里面只定义本方法要操作的功能,不要在定义其他的功能。

什么时候用重载呢?

当定义的功能相同,但是参与运算的未知内容不同

那么,这时候就定义一个函数名称以表示其功能,方便阅读,而通过参数列表的不同来区分多个同名函数

重载里面的参数是有顺序的。重载和返回值类型没关系,重载中只要方法名相同,然后参数类型和参数

个数只要有一方不同它就重载了。

面向对象

将复杂的事物变得简单化

类与对象

类就是对现实生活中事物的描述,对象就是实实在在存在的个体。

匿名对象

匿名对象两种使用情况

当对对象方法仅进行一次调用的时候

匿名对象可以作为实际参数进行传递

只所以对外提供访问方式,就因为可以在访问方式中加入逻辑判断等语句

对访问的数据进行操作,提高代码的健壮性

封装原则:

将不需要对外提供的内容都隐藏,提供公共方法对其访问,隐藏的最低权限是

private.

对外提供的方法用get和set

set方法一般都是void,因为设置了不需要返回且set一般都带参数

而get没有参数。且其返回类型跟它获取的变量一致,你如果看到某个类里

有setxxx或getxxx,那么这个类里一定有私有的属性xxx,

抽象类和方法的特点:

1.抽象方法一定定义在抽象类中

2.抽象方法和抽象类都必须被abstract修饰

3.抽象类不可以用new创建对象,因为调用抽象方法没意义

4.抽象类中的方法要被使用,必须由子类复写所有的抽象方法后,建立子类对象调用。

小结:

如果子类只覆盖了部分抽象方法。那么该子类还是一个抽象类。

抽象类和一般类没太大不同,该怎么描述事物就如何描述,只不过该事务中出现了不确定的部分,

这些部分也是该事物的功能,需要明确出现,但是无法定义主体。通过抽象方法来表示。

抽象类比一般类多了个抽象函数,就是在类中可以定义抽象方法,抽象类中也可以不定义抽象方法,它的

作用是不要该类建立对象。

内部类:

内部类的特点:

内部类可以直接访问外部类中的成员,包括私有成员

原因:之所以可以直接访问外部类中的成员,是因为内部类中持有了一个外部类的引用,

格式:外部类名.this

外部类要访问内部类中的成员必须要建立内部类的对象。

当内部类定义在外部类的的成员位置上时,而且非私有,可以在外部其他类中

可以直接建立内部类对象:

格式:

外部类名.内部类名 变量名=外部类对象.内部类对象;

构造函数的特点:

1.函数名与类名相同

2.不用定义返回值类型

3.不可以写return语句

作用:

给对象进行初始化

注意:

1.默认构造函数的特点

2.多个构造函数是以重载的形式存在的

对象一建立就会调用与之对应的构造函数

构造函数的作用可以用于给对象进行初始化

构造函数的小细节:

当一个类中没有定义构造函数时,那么系统会默认给该类加入一个空参数的

当在类中自定义了一个构造函数后,默认的构造函数就没有了。

一个对象建立,构造函数只运行一次,而一般方法可以被该对象调用多次。

构造代码块需要注意的地方:

作用:给对象进行初始化

对象已建立就运行,而且优先于构造函数执行

构造代码块是给所有对象进行统一初始化

构造代码块中定义的是不同对象共性的初始化内容

二.

类与对象的关系

类就是对现实生活中事物的描述,对象就是这类事物实实在在存在的个体

举例:

现实生活中的对象:张三,李四

想要描述:提取对象中共性的内容,对具体对象的抽象

描述时,这些对象的共性有:姓名,年龄,性别,学习Java的功能

这个描述在Java中是用类表示,而这个对象就是在Java中用new操作符所产生的一个实体,这个实体在堆内

存当中,把这些东西映射到内存里的话一个是类,一个就是实体。

描述事物无非就是两部分,一部分就是事物的属性,另一部分就是事物的行为

属性对应类中的变量,行为对应类中的方法

其实定义类就是在描述事物,就是再定义属性和行为,属性和行为称为类中的成员(成员变量和成员函数)

举例:

人开门(名词提炼法):





开门(门)



门.开();









开(){操作门轴等。}



三.

面向对像的三个特征:封装,继承,多态

以后的开发其实就是找对象使用,没有对象就创建个对象

简单来说就是找对象,建立对象,使用对象,维护对象的关系

成员变量和局部变量:

成员变量作用于整个类中,局部变量作用于函数中,或者语句中

在内存中的位置:

成:在堆内存。因为对象的存在,才在内存中存在

局:存在栈内存中.

数据类型分为两种:1.基本数据类型 2.引用数据类型(数组引用,类引用,接口引用)

堆内存中的变量都有一个特点,那就是默认初始化值。那就是null.

匿名对象使用方式一:当对对象的方法只调用一次时,可以用它来写,这样比较简化,如果

对一个对象进行多个成员调用,必须给这个对象起个名字。

静态代码块:

格式:

static{

静态代码快中的执行语句



特点:

1.随着类的加载而执行 只执行一次,并优先于主函数

2.用于给类进行初始化的

注意:静态代码块是给类初始化的,构造代码块是给对象初始化的。

private:私有权限修饰符,用于修饰类中的成员(成员变量,成员函数)。

注意:私有只在本类中有效。

四.

分析以下代码:

class Person

{

private String name="hah";

private int age;

private static String country="CN";

Person(String name,int age)

{

this.name=name;

this.age=age;

}

{

System.out.println(name+".."+age);

}

public void setName(String name)

{

this.name=name;

}

public void speak()

{

System.out.println(this.name+":::"+this.age);

}

public static void showCountry()

{

System.out.println("country="+country);

}

}

class PersonDemo

{

public static void main(String[] args)

{

Person p=new Person("zhangsan",20);

}

}

1.通过分析以上代码总结几点需要注意的地方:

2.将age私有化以后,类以外即使建立了对象也不能直接访问了

3.人应该有年龄,就需要提供对应的访问方式

4.私有仅仅是封装的一种表现形式

5.之所以对外提供访问方式,就因为可以在访问方式中加入逻辑判断等语句

6.当分析事物时,该事物具备一些特殊行为,那么将这些内容定义在构造函数中

7.静态是一个修饰符,用于修饰成员(成员变量和成员函数)

8.静态修饰内容被对象所共享

9.静态方法只能访问静态成员(方法和变量)

10.非静态方法既可以访问静态也可以访问非静态

11.静态方法中不可以定义this ,super关键字 ,因为静态优先于对象存在,所以静态方法中不可以出现

12.静态有利有弊

利:对对象的共享数据进行单独空间的存储 节省空间,没有必要每个对象中都存储一份

可以直接被类名调用。

弊:生命周期过长 访问出现局限性(静态虽好,只能访问静态)

对象的建立过程:

分析以上代码中的这段"Person p=new Person("zhangsan".20);"代码分析对象的建立过程:

1.因为new用到了Person.class文件,所以先找到Person.class文件并加载到内存中

2.执行该类中的static代码块,如果有的话,给Person.class类进行初始化。

3.在堆内存中开辟空间,分配内存地址

4.在堆内存中建立对象特有属性 并进行默认初始化

5.对属性进行显示初始化

6.对对象进行构造代码快初始化

7.对对象进行对应的构造函数初始化

8.将内存地址赋给栈内存中的P变量。

-------- android培训java培训、期待与您交流! ----------
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: