黑马程序员——java基础之面向对象

来源:互联网 发布:淘宝卖家认证复核 编辑:程序博客网 时间:2024/05/22 13:06
------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! -------


面向对象

面向对象是相对面向过程而言的,面向对象和面向过程都是一种思想,面向过程是强调功能行为的。面向对象是将功能封装进对象,强调具备了功能的对象。面向对象是基于面向过程的。

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

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

成员变量和局部变量:

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

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

匿名对象:

使用方式:1:当对对象的方法只调用一次时,可以用匿名对象来完成,这样写比较简化。如果对一个对象进行多个 员调用,必须给这个对象起个名字。

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

New car().num=5;

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

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

函数是最小的封装体,类也是封装体。 

Private:私有,只在本类中有效。

    构造函数:函数名字和类名相同;不用定义返回值类型;不可以写return语句。

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

当一个类没有定义构造函数时,系统会默认加入一个空参数的构造函数。当类中自定义了,系统就不加了;

构造函数是在对象一建立就运行,给对象初始化。一个对象建立,构造函数只运行一次。

     构造代码块:作用:给对象初始化。对象一建立就运行,而且优先于构造函数。是给所有对象统一初始化,而构造函数是给对应的对象初始化。

 

}

  this 用于区分局部变量和成员变量同名情况。

This:就代表它所在函数所属对象的引用(当前对象)

This语句:用于构造函数之间进行相互调用。This语句只能定义在构造函数的第一行,因为初始化要先执行。

静态:static

用法:用于修饰成员变量(成员变量,成员函数)

修饰后除了能被对象调用还可以被类名调用。 

Static特点:1.随着类的加载而加载。随着类的消失而消失,说明他的生命周期最长。

2.优先于对象存在。静态是先存在的

3.被所有对象所共享。

4.可以直接被类名调用。

静态的使用注意事项:

1.静态方法只能访问静态成员。(非静态成员要有对象)非静态方法可以访问静态和非静态。

2.静态方法中不可以定义thissuper关键字。

3.主函数是静态的。

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

生命周期长,访问出现局限性。

实例变量和类变量:

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

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


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

想要保证对象唯一。

1.为了避免其它程序过多建立该类对象,先禁止其它程序建立该类对象。

2.还为了让其它程序可以访问到该类对象,只好在本类中,自定义一个对象。

3.为了方便其它程序对自定义对象访问,可以对外提供一些访问方式。

这三步怎么实现?

1.将构造函数私有化。

2.在类中创建一个本类对象。

3.提供一个方法可以获取到该对象。

单例模式又分为饿汉式和懒汉式:

饿汉式:先初始化对象。

class DanLi{//单例类private Danli(){}private static DanLi d = new DanLi();public static DanLi getInstance(){return d;}}class SingleDemo{public static void main(String[] args){DanLi dd = DanLi.getInstance();//调用单例类}}
懒汉式:对象是方法被调用时,才初始化,也叫做对象的延时加载。

class DanLi{//单例类private static DanLi d = null;private Danli(){}public static DanLi getInstance(){if(d==null) d = new DanLi();return d;}}class SingleDemo{public static void main(String[] args){DanLi dd = DanLi.getInstance();//调用单例类}}



0 0
原创粉丝点击