黑马程序员——java基础之面向对象
2015-06-27 20:33
471 查看
------<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学习日记之集合(collection类与list接口)及泛型概述
- 程序员神器
- 黑马程序员_java 数组
- 黑马程序员——Java基础——数组
- 黑马程序员——Java基础——基本概念
- 黑马程序员——Java基础——对象加载顺序
- 黑马程序员——Java基础--形式参数
- 读博:做科研的职业训练
- 黑马程序员-------java语法基础
- hive面试题目:表大概有2T左右,对表数据转换--2
- hive面试题目:表大概有2T左右,对表数据转换
- 程序员的修养
- 剑指offer--面试题27:二叉搜索树与双向链表--Java实现
- 程序员如何看待实力与运气
- 黑马程序员——单例设计模式
- 程序员老矣,尚能编否?
- 经典面试问题:12小球问题算法(源码)
- 黑马程序员——java基础之函数和数组
- 关于程序员学英语的经验
- 一个优秀的程序员需要擅长数学吗