黑马程序员—java语言_面向对象1

来源:互联网 发布:usb网络共享驱动下载xp 编辑:程序博客网 时间:2024/06/14 02:24

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

1.面向对象三大特性:封装(encapsulation)、继承(inheritance)、多态(polymorphism)

面向对象是相对面向过程而言的,面向对象和面向过程都是一种思想。

面向过程:强调的是功能主体

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

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

面向对象的特点:

(1)是一种符合人们思考习惯的思想

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

(3)将程序员从执行者转换为指挥者

(4)完成需求时:先找具有所需功能的对象来用,如果对象不存在,那么创建一个具有所需功能的对象,这样简化开发并提高复用。

2.类和对象

类就是对现实生活中事物的描述

对象就是这类事物实实在在存在的个体

定义类就是在描述事物,就是定义属性和行为(成员变量和成员方法)

3.成员变量和局部变量

作用范围:成员变量作用在整个类中,局部变量作用在函数或者语句中

在内存中的位置:成员变量在堆内存中,因为对象的存在才在内存中存在,局部变量存在栈内存中。

成员变量有默认初始化值,局部变量没有。

4.匿名对象使用方式

(1)当对象的方法只调用一次时,可以用匿名对象来完成,这样写比较简单

new Car().run();

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

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

show(new car());

5.封装(encapsulation)函数本身是最小的封装体

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

好处:将变化隔离,便于使用,提高重用性,提高安全性

封装原则:将不需要对外提供的内容都隐藏起来,把属性都隐藏,提供公共方法对其访问。

private:私有,权限修饰符:用于修饰类中的成员(成员变量和成员函数),只在本类中有效,私有仅仅是封装的一种表现形式。

一个成员变量通常对应两个访问方式:设置和获取。

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

6.构造函数

特点:函数名与类名相同,不用定义返回值类型,不可以写return语句。

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

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

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

构造函数和一般函数在写法上不同,在运行上也不同,构造函数是在对象一建立就进行初始化,而一般方法是对象调用才执行,是给对象添加具备的功能,一个对象建立,构造函数只运行一次,而一般方法可以被对象调用多次。

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

7.this关键字

Person(String name)

this.name=name;

this:看上去,是用于区分局部变量和成员变量同名的情况

this:代表着它所在函数所属对象的引用,哪个对象在调用this所在的函数,this就代表哪个对象。

this的应用:当定义类中功能时,该函数内部要用到调用该函数的对象时,这时用this来表示对象,但凡本类功能内部使用到本类对象,就用this。

8.主函数

是一个特殊的函数,作为程序的入口,可以被jvm调用

主函数的定义:

public:代表着该函数访问权限是最大的

static:代表主函数随着类的加载就存在了

void:主函数没有具体的返回值

main:不是关键字,但是是一个特殊的单词,可以被jvm识别

(String[] args):函数的参数,参数类型是一个数组,该数组中的元素是字符串,

9.静态static

用法:是一个修饰符,用于修饰成员(成员变量、成员函数)

当成员被静态修饰后,就多一种调用方式:除了可以被对象调用外,还可以直接被类名调用:类名.静态成员

特点:

(1)随着类的加载而加载,随着类的消失而消失,说明它的生命周期最长。

(2)优先于对象存在,静态是先存在,对象是后存在的

(3)被所有对象所共享

(4)可以直接被类名调用

实例变量和类变量的区别:

(1)存放位置:类变量随着类的加载而存放在方法区中,实例变量随着对象的建立而存在于堆内存中。

(2)生命周期:类变量生命周期最长,随着类的消失而消失;实例变量随着对象的消失而消失。

静态使用注意事项:

(1)静态方法只能访问静态成员。非静态方法既可以访问静态成员也可以访问非静态成员

(2)静态方法中不可以定义this、super关键字,因为静态方法优先于对象存在

(3)主函数是静态的。

静态的利弊:

利:对对象的共享数据进行单独空间的存储,节省空间,没有必要每一个对象都存储一份,可以直接被类名调用

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

什么时候定义静态变量?(类变量)

当对象中出现共享数据时,该数据被静态所修饰;对对象中特有数据,要定义成非静态存在于堆内存中。

什么时候定义静态函数?

当功能内部没有访问到非静态数据时,可以定义为静态函数。

静态代码块:

格式:

static

执行语句;

特点:随着类的加载而执行,只执行一次,并优先于主函数,用于给类进行初始化。

10.单例设计模式:解决一个类在内存中只存在一个对象。

想要保证对象的唯一性:

(1)为了避免其他程序过多建立对象,先禁止其他程序建立对象。(将构造函数私有化)

(2)为了让其他程序可以访问到该对象,在本类中,自定义一个对象。(在类中创建本类对象)

(3)为方便其他程序对自定义对象的访问,可以对外提供一些访问方式。(提供一个方法可以访问该对象)

class Single

private Single(){}

private static Single s=new Single();

public static Single getIstance()

return s;

饿汉式:先初始化对象

class Single
{
private static Single s = new Single();
private Single(){}
public static Single getInstance()
{
return s;
}
}

懒汉式:对象是方法被调用时才初始化,也叫做对象的延迟加载。

class Single
{
private static Single s = null;
private Single(){}
public static Single getInstance()
{
if(s==null)
{
synchronized(Single.class)
{
if(s==null)
s = new Single();
}
}
return s;
}
}






0 0
原创粉丝点击