------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
概述
(包括一些概念及知识点)
面向对象:
1、是一种思想(与面向过程相对应)
2、将功能封装进对象,强调具备了功能的对象。
3、基于面向过程
特点:
封装数据
特征:
封装、继承、多态
类和对象的关系:
类就是对现实生活中食物的描述。对象是这类食物实实在在存在的个体。映射到Java中,描述即使class定义的类。具体对象就是对应Java在堆内存中用new建立的实体。属性对应类中的变量,行为对应类中的函数。定义类就是描述事物,就是定义属性和行为,属性和行为共成为类的成员。
类类型变量指向对象。
作用域及存放位置:
成员变量作用于类中,局部变量作用于函数中。成员变量存放于堆内存中,因对象存在而存在。局部变量存在于栈中。
匿名对象:
对象的简化形式
使用情况:
1、对对象方法仅调用一次时
2、可作为实际参数进行传递(eg.show(new car());
封装:
指隐藏对象的属性和实现细节,仅对外提供公共访问方式
好处:
1.将变化隔离;2.便于复用;3.提高重用性;4.提高安全性;
封装原则:
1.将不需要对外提供的内容都隐藏起来
2.将属性都隐藏,提供公共访问方法对其访问
构造函数:
特点:
1.函数名与类名相同
2.不用定义返回值类型
3.不可以写return
作用:
给对象进行初始化
注意:
1.默认构造函数特点
2.多个构造函数是以重载的形式存在的
构造函数和一般的函数区别:
1.写法不同
2.运行不同(构造函数在对象已建立就运行;一般函数对象调用才执行,给对象添加具备的功能。一个对象一建立,构造函数只运行一次,一般方法可运行多次。
什么时候定义构造函数:
当分析事物事时,该事物存在具备一些特性或者行为,那么将这些内容定义在构造函数中
构造代码块:
作用:给对象进行初始化。
对象一建立即运行且优先于构造函数
构造代码块与构造函数的区别:
构造代码块给所有对象进行统一的初始化,构造函数给对应的对象初始化。构造代码块中定义的是不同对象共性的初始化内容。
this:
1、用于区别局部变量和成员变量重名的情况。
为什么this能解决这个问题?
this代表对象本类的对象。代表所在函数所属对象的引用。
this的应用?
当定义类中功能时,该函数内部要用到调用该函数是时,这时,用this表示这个对象。但凡本类功能内部使用到了本类对象,都用this表示。
2、构造函数间的调用只能用this
this只能定义在构造寒素第一行。因为初始化要先执行。
static
静态:用途:修饰符,用于修饰成员(被静态修饰的成员可以直接被类名调用)
方法区:
特点:1、随着类的加载而加载,生命周期最长;2、优先于对象存在;3,、被所有对象所共享;4、可以直接被类名调用;
实例变量和类变量区别:
1.存放位置:类变量随类加载而存在于方法区中,随类消失而消失;实例变量随对象建立而存在于堆内存中
2.生命周期:类变量生命周期最长,随类消失;实例变量随对象消失;
静态的注意事项:
1.静态方法只能访问静态成员;
2.静态方法中不可以定义this,super关键字(因为静态优先于对象存在)
3.主函数是静态函数
静态的利弊;
利:对象的共享数据进行单独空间存储,节省内存,可直接被调用
弊:生命周期过长,访问出现局限。
主函数:
是一个特殊函数,作为程序入口,可以被JVM调用。
什么时候使用静态?
从两方面:因为静态修饰的内容有成员变量和函数。
什么时候定义静态变量呢?
当对象中出现共享数据时,该数据被静态修饰对象中特有的数据要定义成非静态存在于堆内存中。
什么时候定义静态函数?
当功能内部设有访问到非静态数据,该功能可以定义成静态的。
静态的应用:
每一个程序中都有共性的功能,可以将这些功能抽取,独立封装,以便复用。
工具类中定义的均是静态方法。
静态代码块:
格式
static
{
静态代码快中的执行语句;
}
特点:
随类加载而执行,只执行一次,优先于主函数,用于给类初始化。
用到类中内容时才会加载,不用不加载。
建立对象时的执行顺序:(P p = new P();)
1.因为new用到了P类,所以先找到P.class文件啊你并加载到内存中。
2.执行类中的static代码块,有的话,为P.class类进行初始化
3.在堆内存中开辟空间,分配内存地址
4.在堆内存中建立对象的特有属性,并进行默认初始化
5.对属性进行显示初始化
6.对对象进行构造代码块初始化
7.对对象进行对应的构造函数初始化
8.将内存地址赋给栈内存中的p变量
设计模式:
解决某类问题最行之有效的方法,java中有23种设计模式。
单例设计模式:
解决一个类在内存中存在一个对象的问题。
想要保证对象唯一:
1.为了避免其他程序过多建立该类对象。先控制禁止其他程序建立该类对象。
2.为了让其他程序访问该类对象,只在本类中,自定义一个对象。
3.为方便其他程序对自定义对象的访问,可提供对外一些访问方式。
代码的实现:
1、将构造函数私有化。
2、在类中创建一个本类对象。
3、提供一个方法可以获取该对象。
单例设计模式分为:
1.先初始化对象,称为:饿汉式
2.对象是方法被调用时,才初始化,也叫做对象的延时加载。称为:懒汉式。
饿汉式例子:
懒汉式例子: