------- android培训、java培训、期待与您交流! ----------
面向对象(Object Oriented)是Java语言的核心思想。面向对象是相对面向过程而言,面向过程强调的是功能行为,面向对象强调的是将功能封装进对象,强调具备了功能的对象,且面向对象是基于面向过程的。
过程和对象在我们的程序中的体现:过程其实就是函数;对象是将函数等一些内容进行了封装
1:将复杂的事情简单化。
2:面向对象将以前的过程中的执行者,变成了指挥者
3:面向对象这种思想是符合现在人们思考习惯的一种思想
类的定义:描述事物壁板就是描述事物的属性和行为
在Java中属性:对应类中的成员变量
行为:对应类中的成员函数
成员变量和局部变量的区别:
1:成员变量直接定义在类中
局部变量定义在方法中,参数上,语句中
2:成员变量在这个类中有效
局部变量只在自己所属的大括号内有效,大括号结束,局部变量失去作用域
3:成员变量存在于堆内存中,随着对象的产生而存在,消失而消失
局部变量存在于栈内存中,随着所属区域的运行而存在,结束而释放
构造函数:用于给对象进行初始化,是给与之对应的对象进行初始化,它具有针对性,函数中的一种
1:该函数的名称和所在类的名称相同
2:不需要定义返回值类型
3:该函数没有具体的返回值
一个类在定义时,如果没有定义过构造函数,那么该类中会自动生成一个空参数的构造函数,如果在类中自定义了构造函数,那么默认的构造函数就没有了。
一个类中,可以有多个构造函数,因为它们的函数名称都相同,所以只能通过参数列表来区分。所以,一个类中如果出现多个构造函数。它们的存在是以重载体现的
构造函数和一般函数的区别:
构造函数是在对象创建时,就被调用,用于初始化,而且初始化动作只执行一次。 一般函数,是对象创建后,需要调用才执行,可以被调用多次
匿名对象:
1:当对方法只进行一次调用的时候,可以使用匿名对象
2:当对象对成员进行多次调用时,不能使用匿名对象,必须给对象起名字
面向对象特征:封装(encapsulation)、继承(inheritance)、多态(polymorphism)
封装:是指隐藏对象的属性和实现细节,仅对外提供公共访问方式。
将变化隔离、便于使用、提高重用性、提高安全性
封装原则:将不需要对外提供的内容都隐藏起来;把属性都隐藏,提供公共方法对其访问
this关键字:代表本类的对象的引用,在函数内需要用到调用该函数的对象时,就用this
调用格式:
this对象后面跟上 . 调用的是成员属性和成员方法(一般方法)
this对象后面跟上 () 调用的是本类中的对应参数的构造函数
this调用构造函数时必须在构造函数第一行,由于构造函数是用于初始化导致的
static关键字:用于修饰成员(成员变量和成员函数)
static的特点:
1:是一个修饰符,用于修饰成员
2:修饰的成员被所有的对象所共享
3:优先于对象存在,因为static的成员随着类的加载就已经存在了
4:修饰的成员多了一种调用方式,就可以直接被类名所调用 。 类名.静态成员
5:修饰的数据是共享数据,对象中的存储的是特有数据
使用注意:
1:静态方法只能访问静态成员。(非静态既可以访问静态,又可以访问非静态)
2:静态方法中不可以使用this或者super关键字
3:主函数是静态的
静态的使用:
1,静态变量。(数据共享时静态化)
该成员变量的数据是否是所有对象都一样
是,那么该变量需要被静态修饰,因为是共享的数据
不是,那么就说这是对象的特有数据,要存储到对象中
2,静态函数。(方法中没有调用特有数据时就定义成静态)
判断成员函数是否需要被静态修饰
只要参考,该函数内是否访问了对象中的特有数据:
有访问特有数据,那方法不能被静态修饰。
没有访问过特有数据,那么这个方法需要被静态修饰
成员变量和静态变量区别:
1:两个变量的生命周期不同
成员变量随着对象的创建而存在,随着对象的被回收而释放
静态变量随着类的加载而存在,随着类的消失而消失
2:调用方式不同
成员变量只能被对象调用
静态变量可以被对象调用,还可以被类名调用
3:别名不同
成员变量也称为实例变两量
静态变量称为类变量
4:数据存储位置不同
成员变量数据存储在堆内存的对象中,所以也叫对象的特有数据
静态变量数据存储在方法区(共享数据区)的静态区,所以也叫对象的共享数据
静态代码块:就是一个有静态关键字标示的一个代码块区域
主函数:main:主函数特定名称
(String[] args):主函数的参数,是一个字符串数组类型的参数,jvm调用main方法时,传递的实际参数是 new String[0]
设计模式:对问题行之有效的解决方式,其实它是一种思想。
单例设计模式
解决的问题:保证一个类在内存中的对象唯一性。
比如:多程序读取一个配置文件时,建议配置文件封装成对象。会方便操作其中数据,又要保证多个程序读到的是同一个配置文件对象,就需要该配置文件对象在内存中是唯一的。
保证对象唯一性:
1:不允许其他程序用new创建该类对象
2:在该类创建一个本类实例
3:对外提供一个方法让其他程序可以获取该对象
步骤:
1:私有化该类构造函数
2:通过new在本类中创建一个本类对象
3:定义一个公有的方法,将创建的对象返回
//饿汉式
class Single1 //类一加载,对象就已经存在了。
{
private static Single1 s = new Single1();
private Single1(){}
public static Single1 getInstance()
{
return s;
}
}
//懒汉式 :延迟加载方法
class Single2 //类加载进来,没有对象,只有调用了getInstance方法时,才会创建对象
{
private static Single2 s = null;
private Single2(){}
public static Single2 getInstance()
{
if(s==null)
s = new Single2();
return s;
}
}