面向过程编程思想
面向过程的抽象是将实现一个功能的一组命令组合成为一个函数,这个函数就能实
现这一个功能,是对功能实现的一种抽象,有了函数,我们就没有必要重复写很多
的代码(特殊地譬如递归,可通过循环替代),仅仅一个代码集合名称以及参数就能
调用抽象的命令集合。
面向对象编程包括
面向对象的分析(OOA,Object Oriented Analysis)
面向对象的设计(OOD,Object Oriented Design)
面向对象的编程实现(OOP,Object Oriented Programming)
面向对象编程思想实际上就是一种运用对象、类、继承、封装、聚合、关
联、消息、多态性等概念来构造系统的软件开发方法。
实现
分析系统中涉及的事务,根据“对象”抽象出“类”;
找出对象共有的特点,并且在类中定义为属性;
找出对象共有的行为,并且定义为类的方法。
面向对象概念
-抽象(动词)
-对象
-类:类是一组具有相同属性和行为的对象的抽象,类的作用是用来创建对象,对
象是类的一个实例
-类和对象的关系
抽象和具体的关系。
每一个类在某一时刻都有零个或更多的实例, 类是生成对象的模板
一个类定义了使用哪些数据来描述属性,每一个对象都有相应的属性值数据
,一个类通过一系列方法来定义行为,这些方法能在每个对象中被激活
类的定义
把相似的对象划归成一个类。
在软件设计中,类,就是一个模板,它定义了通用于一个特定种
类的所有对象的属性(变量)和行为(方法)。
格式:
编码规范:
类名单词首字母大写
属性和方法第一个单词小写,其他单词首字母大写
属性和局部变量对比
局部变量
方法体中声明的变量、方法中的参数或代码块中声明的变量,都是局部
变量
属性可以和局部变量同名,使用关键字this进行区分
认识对象
类和对象的关系
类是创建对象的模板,对象是类的实例。
对象的创建
什么是对象
类(class)是对某一类事物的描述
对象(object)是实际存在的某类事物的个体,也称实例(instance)
创建语法语句:
Employee(类名) zhang(对象名)=new Employee(类名)
对象的使用
在其他类中,使用对象名点运算符调用属性和方法
-引用类的属性:对象名。属性
-引用类的方法:对象名。方法名(实参)
对象的创建
1.编写一个类
2.在主函数中创建对象、
3.运行有主函数的类
只有主函数的类才能运行
无论有多少个类,只要主函数中创建对象,才会占用内存。
创建多个对象
创建匿名对象
创建完对象,在调用该对象的属性或方法时,也可以不定义对象的句柄
,而直接调用这个对象的方法。这样的对象叫匿名对象。
如果只使用该对象进行一次方法或属性调用,可以创建匿名对象。
构造方法
构造器(constructor)
-构造方法也是方法,但是它是特殊的方法而已
-所有对象都是通过构造器来创建的
创建对象:类名 对象名=new 构造方法();
构造器(构造方法/构造器,constructor)特点:
-构造方法名必须与类名称相同
-不含返回值类型,也没有void
-不能在方法中用return语句返回一个值
构造方法作用
构造方法用来完成对象的创建,即完成对象的实例化
-在java中,每个类都至少有一个构造器
-一个类可以不写出构造方法,编译器会自动给这个类增加一个构造器,该构造器没有任何参数,称:默认的空构造器。
构造方法重载
构造方法可以像普通方法一样发生重载,通常一个类中不止一个构造方法,而是有多个不同参数的构造器,用户可以根据需要选择不同的构造器创建对象。
-一般可以使用构造器来完成对成员变量的初始化。
有带参的构造器,那么不带参的空构造器不会自动产生。为了防止在某
些情况下还想使用这样的无参数默认构造器,因此最好还是养成写出这
个无参数的构造器来,以备后用。
构造方法的调用
在其他类只能在创建对象时调用一次构造方法。
普通方法可以在创建对象后,使用点运算符调用多次。
多次调用构造器,一个类可以实例化多个对象。
java包的概念
在Java中,包主要有以下用途 :
包允许将类组合成较小的单元
有助于避免命名冲突
包允许在更广的范围内保护类、数据和方法
语法: package 包名:
Java类库中常用的包
java.lang: java默认包,任何程序中,该包都被自动导入。
java.io:输入/输出操作有用的类的组成。
访问同包中的类
位于同一包中的类可以直接访问并使用
访问不同包中的类
使用import关键字引入其他包中的类
必须在package声明后面,类声明前
import语句可以出现多次。
package和import说明
package说明:
package像是我们的姓,而class名称就像是我们的名字
package和package的附属关系用”.”来连接,这就像是复姓。
import说明:
import就是在java文件开头的地方,先说明会用到哪些类。
接着就能在代码中只用类名指定某个类,也就是只称呼名字,不称呼她的姓。
import使用通配符
import可以使用星号(*)通配符
代码封装
封装关键字:
-private(私有):只能被该类的成员访问,private权限最小,限制类外访问。
-default(默认):不使用权限修饰符时(即default)的成员在类内以及
在同一个包中的其他类可以访问。
public(公有):公有的,最高的访问级别,public成员可以在所有其
他类中访问
封装的常规属性
-将类中的属性用private关键字进行隐藏
-通过规定方法访问属性,一般通过set开头的公有方法对属性赋值,用get开头的共有方法得到属性的值。
-在方法中加入控制语句,对不合法数据进行检查。
静态:static关键字
static关键字可以修饰的元素
-属性
所有对象共享,称为静态变量或类变量
不用static修饰的属性称为实例变量
注意:只能修饰属性,不能修饰局部变量。
-方法
不需要实例化,可以直接访问,称静态方法或类方法。
-代码块
静态属性
静态变量和非静态变量的区别是:静态变量被所有的对象所共享,在内
存中只有一个副本,它当且仅当在类初次加载时会被初始化。而非静态
变量是对象所拥有的,在创建对象的时候被初始化,存在多个副本,各
个对象拥有的副本互不影响。
两种方式访问
直接访问:类名.属性
实例化后访问:对象名.属性(不建议使用)
静态语句块
一个类中由static关键字修饰的,不包含在任何方法体中的代码块
当类被载入时,静态代码块被执行,且只被执行一次
静态块经常用来进行类属性的初始化
单例模式
单例模式:保证一个类仅有一个实例,并提供一个访问它的全局访问点。
单例模式要点:
-某个类只能有一个实例
-它必须自行创建这个实例
-必须自行向整个系统提供这个实例