黑马程序员——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.静态方法中不可以定义this,super关键字。
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();//调用单例类}}
- 黑马程序员——JAVA基础之面向对象
- 黑马程序员 ——Java基础之面向对象
- 黑马程序员——java基础之面向对象
- 黑马程序员——java基础之面向对象
- 黑马程序员—Java基础学习笔记之面向对象
- 黑马程序员—【Java基础篇】之面向对象
- 黑马程序员 java基础<—>--->面向对象
- 黑马程序员----JAVA基础之面向对象
- 黑马程序员----java基础之面向对象
- 黑马程序员----Java基础之面向对象
- 黑马程序员--JAVA基础之面向对象
- 黑马程序员-JAVA基础之面向对象
- 黑马程序员----java基础之面向对象
- 黑马程序员----java基础之面向对象
- 黑马程序员-JAVA基础之面向对象
- 黑马程序员 Java基础之面向对象
- 黑马程序员—Java之面向对象
- 黑马程序员——Java基础---java面向对象基础
- css属性区分---------word-break与word-wrap
- 关于高考以及其他
- 欢迎使用CSDN-markdown编辑器
- SQL Server 创建约束图解 唯一 主键
- js防刷新的倒计时
- 黑马程序员——java基础之面向对象
- 多线程编程(三)--创建线程之Thread VS Runnable
- Effective C++ 条款25
- 排序算法之选择排序
- java命令中的classpath参数
- MFC常用函数汇总
- 插入排序
- [CodeForces550C]Divisibility by Eight[数学]
- Java IO流 字节流与字符流