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

黑马程序员——面向对象

2016-06-29 23:37 232 查看
——Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ——-

1.面向对象的特点

• 是一种符合人们思考习惯的思想

• 可以将复杂的事情简单化

• 将程序员从执行者转换成了指挥者

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

过程和对象在我们的程序中是如何体现的呢?

过程其实就是函数;对象是将函数等一些内容进行了封装。

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

作用范围。

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

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

在内存中的位置:

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

局部变量:存在栈内存中。

匿名对象:new car()

匿名对象两种使用情况

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

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

2面向对象的特征:

• 封装(encapsulation)

• 继承(inheritance)

• 多态(polymorphism)

(1)封装

封装:是指隐藏对象的属性和实现细节,仅对外提供

公共访问方式。

好处:

• 将变化隔离。

• 便于使用。

• 提高重用性。

• 提高安全性。

封装原则:

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

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

private int age;//私有的访问权限最低,只有在本类中的访问有效。

注意:私有仅仅是封装的一种体现形式而已。

私有的成员:其他类不能直接创建对象访问,所以只有通过本类对外提供具体的访问方式来完成对私有的访问,可以通过对外提供函数的形式对其进行访问。

好处:可以在函数中加入逻辑判断等操作,对数据进行判断等操作。

总结:开发时,记住,属性是用于存储数据的,直接被访问,容易出现安全隐患,所以,类中的属性通常被私有化,并对外提供公共的访问方法。

这个方法一般有两个,规范写法:对于属性 xxx,可以使用setXXX(),getXXX()对其进行操作。

构造函数:用于给对象进行初始化,是给与之对应的对象进行初始化,它具有针对性,函数中的一种。

特点:

1:该函数的名称和所在类的名称相同。

2:不需要定义返回值类型。

3:该函数没有具体的返回值。

记住:所有对象创建时,都需要初始化才可以使用。

注意事项:一个类在定义时,如果没有定义过构造函数,那么该类中会自动生成一个空参数的构造函数,为了方便该类创建对象,完成初始化。如果在类中自定义了构造函数,那么默认的构造函数就没有了。一个类中,可以有多个构造函数,因为它们的函数名称都相同,所以只能通过参数列表来区分。所以,一个类中如果出现多个构造函数。它们的存在是以重载体现的。

构造代码块

作用给对象进行初始化。 对象一建立就运行,而且优先于构造函数执行。

和构造函数的区别

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

而构造函数是给对应的对象初始化。(构造代码快中定义的是不同对象共性的初始化内容。)

class Person
{
private String name;
private int age;
{
//System.out.println("person code run");
cry();
}
public void cry()
{

System.out.println("cry......");
}
}


Person p = new Person();

创建一个对象都在内存中做了什么事情?

1:先将硬盘上指定位置的Person.class文件加载进内存。

2:执行main方法时,在栈内存中开辟了main方法的空间(压栈-进栈),然后在main方法的栈区分配了一个变量p。

3:在堆内存中开辟一个实体空间,分配了一个内存首地址值。new

4:在该实体空间中进行属性的空间分配,并进行了默认初始化。

5:对空间中的属性进行显示初始化。

6:进行实体的构造代码块初始化。

7:调用该实体对应的构造函数,进行构造函数初始化。

8:将首地址赋值给p ,p变量就引用了该实体。(指向了该对象)

static关键字

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

 被修饰后的成员具备以下特点:

 随着类的加载而加载

 优先于对象存在

 被所有对象所共享

 可以直接被类名调用

使用注意

 静态方法只能访问静态成员

 静态方法中不可以写this, super关键字

 主函数是静态的
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java