java基础--面向对象入门

一、面向对象


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);
	}
}


posted @ 2012-10-04 10:29  积小流,成江海  阅读(135)  评论(0编辑  收藏  举报