您的位置:首页 > 编程语言 > Java开发

java基础--面向对象入门

2012-10-04 10:29 344 查看
一、面向对象

1 理解

1> 面向对象是相对于面向过程而言的

2> 面向对象和面向过程都是一种思想

3> 面向过程:强调的是功能行为

2 面向对象:将功能封装进对象,强调具备了功能的对象

3 面向对象是基于面向过程的

4 面向对象的特点

1> 是一种符合人们思考习惯的思想。

2>可以将复杂的事情简单化

3>将程序员从执行者转变成了指挥者

4>完成需求时;

先要去找具有所需的功能的对象来用,如果对象不存在,那么创建一个具有所需功能的对象。

这样简化开发并提高复用。

5 面向对象开发,设计,特征

开发的过程:其实就是不断创建对象,使用对象,指挥对象做事情。

设计的过程:其实就是在管理和维护对象之间的关系。

面向对象的特征:

封装(encapsulation)

继承(inheritance)

多态(polymorphism)

6 类与对象的关系

1> 使用计算机语言就是不断的在描述现实生活中的事物

2> Java中描述事物通过类的形式体现,类是具体事物的抽象,概念上的定义

3> 对象即是该类事物实实在在存在的个体

7 类的定义

1> 生活中描述事物无非就是描述事物的属性和行为。

2> Java中用类class来描述事物也是如此。

属性:对应类中的成员变量

行为:对应类中的成员函数

!!! 定义类其实就是在定义类中的成员(成员变量和成员函数)

8 成员变量和局部变量的区别

成员变量:

1> 成员变量定义在类中,在整个类中都可以被访问。

2> 成员变量随着对象的建立而建立,存在于对象所在的堆内存中。

3> 成员变量有默认初始化值。

局部变量:

1> 局部变量只定义在局部范围内,如:函数内,语句内等。

2> 局部变量存在于栈内存中。

3> 作用的范围结束,变量空间会自动释放。

4> 局部变量没有默认初始化值。

9 匿名对象

1> 匿名对象对于方法的调用有意义,而对于属性的操作没有意义。(调用后就变成垃圾了)

2> 当对对象的方法只调用一次时,可以用匿名对象来完成,这样比较简化。

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

二、封装(Encapsulation)

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

1 好处:

1> 将变化隔离

2> 便于使用

3> 提高复用性

4> 提高安全性

2 封装原则:

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

2> 把属性都隐藏,对外提供公共方法对其访问。

之所以对外提供访问方式,就是因为可以再访问方式中加入逻辑判断等语句。对方问的数据进行验证性操作。提高代码的健壮性。

三、private关键字

1 是一个权限修饰符。

2 用于修饰成员(成员变量和成员函数)

3 被私有化的成员只在本来中有效

4 常用之一:

将成员变量私有化,对外提供对应的set,get方法对其访问。提高对数据访问的安全性。

四、构造函数

1. 特点:

1> 函数名与类名相同

2> 不用定义返回值类型

3> 不可以写return语句

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

5> 当一个类中没有定义构造函数时,那么系统会默认给类加入一个空参数的构造函数。否则对象不能建立,因为对象没有办法初始化。

6> 多个构造函数是以重载的形式存在的。

2 作用:

给对象进行初始化。当分析事物时,该事物存在具备一些特性或者行为,那么将这些内容定义在构造函数当中。

3 构造函数的权限

1> 一个类中默认(看不见)会有一个空参数的构造函数,

2> 这个默认的构造函数的权限和所属类一致。

如果类被public修饰,那么默认的构造函数也带public修饰符。

如果类没有被public修饰,那么默认的构造函数,也没有public修饰。

默认构造构造函数的权限是随着的类的变化而变化的

构造代码块

作用:给对象进行初始化,定义的是不同对象共性的初始化内容。

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

和构造函数的区别:

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

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

五、this关键字

1 特点:

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

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

2 什么时候使用this关键字?

当在函数内需要用到调用该函数的对象时,就用this。

(本类功能内部调用本类对象时)

例如:

//需求:给Person类中定义一个用于比较年龄是否相同的功能。

publicboolean compare(Person p){

returnthis.age==p.age;

}

this语句:用于构造函数之间进行互相调用。且只能用在构造函数间的调用,一般函数不可以。

3 this语句只能定义在构造函数的第一行

因为初始化要先执行否则编译不通过。

反证法:

如果this(name)不是放在第一行,那么先执行this.name = name;

name被赋予了lisi,但是在执行this()的时候,又重新赋予了最开始初始化的值:zhangsan.

结果并不是最初想要的lisi。

所以初始化的动作要先执行,再执行自己的初始化。

使用this在构造函数间访问以及this必须放在第一行的示例:

class Person{
private String name;
private int age;

//构造代码块
{
System.out.println("code run");
}

Person(){
//this("zhangsan");		//访问Person(String name)
System.out.println("person run");
}
Person(String name){
//this();			//访问Person(),构成了死循环
this.name =name;
}
Person(String name,int age){

//this.name = name;		//先进行自己的初始化得到:name = “lisi”
//this(name);			//再进行最原始的初始化,得到name=”zhangsan”,并不是自己传入的值,所以初始化应该先执行
this.age = age;

}

}
class  PersonDemo{
public static void main(String[] args) {
new Person();
Person p = new Person("lisi",30);
Person p1 = new Person("lisi2",36);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: