现在的位置: 首页 > 综合 > 正文

黑马程序员—面向对象(1)

2013年10月02日 ⁄ 综合 ⁄ 共 2012字 ⁄ 字号 评论关闭

---------------------- android培训java培训、期待与您交流! ----------------------

3.1面向对象的概念

3.2类与对象的关系

3.3封装

3.4构造函数

3.5this关键字

3.6static关键字

3.7单例设计模式

3.1.1理解面向对象

(1)面向对象是相对面向过程的。

(2)面向对象和面向过程都是一种思想。

(3)面向过程:强调的是功能行为。

(4)面向对象:将功能封装进对象,强调具备了功能的对象。

(5)面向对象是基于面向过程的。

描述事物其实就是在描述事物的属性和行为。

属性和行为都是类中的成员。

属性对应类中的变量,行为对应类中的函数(方法)

只要是new,就是在堆内存中建立了一个新对象

成员变量和局部变量:

作用范围不同:

成员变量作用于整个类中。

局部变量作用于函数中或者语句中。

在内存中的位置不同:

成员变量在堆内存中,因为对象的存在,才在内存中存在。

局部变量在占内存中。

匿名对象是对象的简化形式。

Egnew Car()就是一个匿名对象。

     New Car().num=5

匿名对象2种使用情况:

(1)当对对象方法仅进行一次调用时。

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

3.3封装

封装:是指隐藏对象的属相和实现细节,仅对外提供公共访问方式。

封装的好处:

(1)将变化隔离

(2)便于使用

(3)提高重用性

(4)提高安全性

封装的原则:

(1)将不需要对外提供的内容都隐藏起来。

(2)把属性都隐藏起来,提供公共方法对其访问。

3.4构造函数

特点:

(1)函数名与类名相同。

(2)不用定义返回值类型。

(3)不可以写return语句。

作用:给对象进行初始化。

注意:

(1)默认构造函数的特点。

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

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

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

构造函数和一般函数的不同:

(1)写法上不同

(2)运行上也有不同
 构造函数是在对象一建立就运行,给对象初始化。

 一般函数是对象调用才执行,是给对象添加对象具备的功能。

一个对象建立,构造函数运行一次

一般方法可以被该对象调用多次。

什么时候定义构造函数?

当分析事物时,该事物存在一些特性或者行为,那么就将这些内容定义在构造函数中。

构造代码块

{

 System.out.println(“aa”);

}

构造代码块作用:给对象进行初始化。

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

和构造函数的区别:

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

构造函数是给对应的对象初始化。

this关键字

作用:

(1)用于区分同名变量的情况,成员变量和局部变量同名的时候。

(2)用于构造函数间的调用。

一般函数是不能调用构造函数的,因为this语句是不能用在一般函数中的。

this代表它所在函数所属对象的引用。

简单说:哪个对象在调用this所在的函数,this就代表哪个对象。

class PersonDemo 

{

public static void main(String[] args) 

{

Person p1=new Person(20);

Person p2=new Person(22);

boolean b=p1.compare(p2);

System.out.println(b);

/*

Person p=new Person("lisi");

Person p1=new Person("wangwu");

p.speak();

p1.speak();

*/

}

}

class Person

{

private String name;

private int age;

Person(int age)//构造函数

{

this.age=age;

}

Person(String name)//构造函数

{

this.name=name;

}

Person(String name,int age)//构造函数

{

//this.name=name;

this(name);//构造函数间的调用,它与一般函数之间的调用不一样

this.age=age;

}

public void speak()//成员函数

{

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

this.show();

}

public void show()//成员函数

{

System.out.println(this.name);

}

public boolean compare(Person p)

{

return this.age==p.age;

}

}

构造函数间调用只能用this语句

This语句只能够定义在构造函数的第一行。因为初始化要先执行。

---------------------- android培训java培训、期待与您交流! ----------------------

详细请查看:http://edu.csdn.net/heima

抱歉!评论已关闭.